From: kbuild test robot <lkp@intel.com>
To: Balaji Pothunoori <bpothuno@codeaurora.org>
Cc: Ashok Raj Nagarajan <arnagara@codeaurora.org>,
linux-wireless@vger.kernel.org, ath10k@lists.infradead.org,
kbuild-all@01.org, johannes@sipsolutions.net
Subject: Re: [PATCH v4 2/3] mac80211: store tx power value from user to station
Date: Sun, 31 Mar 2019 15:22:10 +0800 [thread overview]
Message-ID: <201903311552.TtxO16s6%lkp@intel.com> (raw)
In-Reply-To: <1553856549-21552-1-git-send-email-bpothuno@codeaurora.org>
[-- Attachment #1: Type: text/plain, Size: 98640 bytes --]
Hi Balaji,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on mac80211-next/master]
[also build test WARNING on v5.1-rc2 next-20190329]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Balaji-Pothunoori/cfg80211-Add-support-to-set-tx-power-for-a-station-associated/20190331-104601
base: https://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git master
reproduce: make htmldocs
All warnings (new ones prefixed by >>):
WARNING: convert(1) not found, for SVG to PDF conversion install ImageMagick (https://www.imagemagick.org)
include/linux/rcupdate_wait.h:1: warning: no structured comments found
include/linux/rcutree.h:1: warning: no structured comments found
kernel/rcu/tree.c:710: warning: Excess function parameter 'irq' description in 'rcu_nmi_exit'
include/linux/gfp.h:1: warning: no structured comments found
include/net/cfg80211.h:1072: warning: Function parameter or member 'txpwr' not described in 'station_parameters'
>> include/net/mac80211.h:4029: warning: Function parameter or member 'sta_set_txpwr' not described in 'ieee80211_ops'
>> include/net/mac80211.h:2000: warning: Function parameter or member 'txpwr' not described in 'ieee80211_sta'
kernel/rcu/tree.c:711: warning: Excess function parameter 'irq' description in 'rcu_nmi_exit'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_excl.cb' not described in 'dma_buf'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_excl.poll' not described in 'dma_buf'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_excl.active' not described in 'dma_buf'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_shared.cb' not described in 'dma_buf'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_shared.poll' not described in 'dma_buf'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_shared.active' not described in 'dma_buf'
include/linux/dma-fence-array.h:54: warning: Function parameter or member 'work' not described in 'dma_fence_array'
include/linux/firmware/intel/stratix10-svc-client.h:1: warning: no structured comments found
include/linux/gpio/driver.h:371: warning: Function parameter or member 'init_valid_mask' not described in 'gpio_chip'
include/linux/iio/hw-consumer.h:1: warning: no structured comments found
include/linux/input/sparse-keymap.h:46: warning: Function parameter or member 'sw' not described in 'key_entry'
include/linux/regulator/machine.h:199: warning: Function parameter or member 'max_uV_step' not described in 'regulation_constraints'
include/linux/regulator/driver.h:228: warning: Function parameter or member 'resume' not described in 'regulator_ops'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw0' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw1' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw2' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw3' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.eadm' not described in 'irb'
drivers/slimbus/stream.c:1: warning: no structured comments found
include/linux/spi/spi.h:180: warning: Function parameter or member 'driver_override' not described in 'spi_device'
drivers/target/target_core_device.c:1: warning: no structured comments found
drivers/usb/typec/bus.c:1: warning: no structured comments found
drivers/usb/typec/class.c:1: warning: no structured comments found
include/linux/w1.h:281: warning: Function parameter or member 'of_match_table' not described in 'w1_family'
fs/direct-io.c:257: warning: Excess function parameter 'offset' description in 'dio_complete'
fs/file_table.c:1: warning: no structured comments found
fs/libfs.c:477: warning: Excess function parameter 'available' description in 'simple_write_end'
fs/posix_acl.c:646: warning: Function parameter or member 'inode' not described in 'posix_acl_update_mode'
fs/posix_acl.c:646: warning: Function parameter or member 'mode_p' not described in 'posix_acl_update_mode'
fs/posix_acl.c:646: warning: Function parameter or member 'acl' not described in 'posix_acl_update_mode'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:294: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:294: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:294: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:343: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:343: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:343: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:183: warning: Function parameter or member 'blockable' not described in 'amdgpu_mn_read_lock'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Function parameter or member 'range' not described in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Function parameter or member 'range' not described in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:382: warning: cannot understand function prototype: 'struct amdgpu_vm_pt_cursor '
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:383: warning: cannot understand function prototype: 'struct amdgpu_vm_pt_cursor '
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:555: warning: Function parameter or member 'adev' not described in 'for_each_amdgpu_vm_pt_leaf'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:555: warning: Function parameter or member 'vm' not described in 'for_each_amdgpu_vm_pt_leaf'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:555: warning: Function parameter or member 'start' not described in 'for_each_amdgpu_vm_pt_leaf'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:555: warning: Function parameter or member 'end' not described in 'for_each_amdgpu_vm_pt_leaf'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:555: warning: Function parameter or member 'cursor' not described in 'for_each_amdgpu_vm_pt_leaf'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:603: warning: Function parameter or member 'adev' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:603: warning: Function parameter or member 'vm' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:603: warning: Function parameter or member 'cursor' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:603: warning: Function parameter or member 'entry' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:847: warning: Function parameter or member 'level' not described in 'amdgpu_vm_bo_param'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1352: warning: Function parameter or member 'params' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1352: warning: Function parameter or member 'bo' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1352: warning: Function parameter or member 'pe' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1352: warning: Function parameter or member 'addr' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1352: warning: Function parameter or member 'count' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1352: warning: Function parameter or member 'incr' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1352: warning: Function parameter or member 'flags' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'params' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'bo' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'level' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'pe' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'addr' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'count' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'incr' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'flags' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:3095: warning: Function parameter or member 'pasid' not described in 'amdgpu_vm_make_compute'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:128: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source @atomic_obj
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'atomic_obj' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'atomic_obj_lock' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'backlight_link' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'backlight_caps' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'freesync_module' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'fw_dmcu' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'dmcu_fw_version' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c:1: warning: no structured comments found
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_pin' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_unpin' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_res_obj' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_get_sg_table' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_import_sg_table' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_vmap' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_vunmap' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_mmap' not described in 'drm_driver'
include/drm/drm_atomic_state_helper.h:1: warning: no structured comments found
drivers/gpu/drm/drm_dp_helper.c:1364: warning: Function parameter or member 'dsc_dpcd' not described in 'drm_dp_dsc_sink_max_slice_count'
drivers/gpu/drm/drm_dp_helper.c:1364: warning: Function parameter or member 'is_edp' not described in 'drm_dp_dsc_sink_max_slice_count'
drivers/gpu/drm/i915/i915_vma.h:49: warning: cannot understand function prototype: 'struct i915_vma '
drivers/gpu/drm/i915/i915_vma.h:1: warning: no structured comments found
drivers/gpu/drm/i915/intel_guc_fwif.h:536: warning: cannot understand function prototype: 'struct guc_log_buffer_state '
drivers/gpu/drm/i915/i915_trace.h:1: warning: no structured comments found
include/linux/skbuff.h:876: warning: Function parameter or member 'dev_scratch' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'list' not described in 'sk_buff'
vim +4029 include/net/mac80211.h
cf2c92d840 Eliad Peller 2014-11-04 3188
cf2c92d840 Eliad Peller 2014-11-04 3189 /**
75a5f0ccfd Johannes Berg 2007-09-18 3190 * struct ieee80211_ops - callbacks from mac80211 to the driver
75a5f0ccfd Johannes Berg 2007-09-18 3191 *
75a5f0ccfd Johannes Berg 2007-09-18 3192 * This structure contains various callbacks that the driver may
75a5f0ccfd Johannes Berg 2007-09-18 3193 * handle or, in some cases, must handle, for example to configure
75a5f0ccfd Johannes Berg 2007-09-18 3194 * the hardware to a new channel or to transmit a frame.
75a5f0ccfd Johannes Berg 2007-09-18 3195 *
75a5f0ccfd Johannes Berg 2007-09-18 3196 * @tx: Handler that 802.11 module calls for each transmitted frame.
f0706e828e Jiri Benc 2007-05-05 3197 * skb contains the buffer starting from the IEEE 802.11 header.
f0706e828e Jiri Benc 2007-05-05 3198 * The low-level driver should send the frame out based on
eefce91a38 Johannes Berg 2008-05-17 3199 * configuration in the TX control data. This handler should,
11127e9121 Johannes Berg 2011-11-16 3200 * preferably, never fail and stop queues appropriately.
11127e9121 Johannes Berg 2011-11-16 3201 * Must be atomic.
75a5f0ccfd Johannes Berg 2007-09-18 3202 *
75a5f0ccfd Johannes Berg 2007-09-18 3203 * @start: Called before the first netdevice attached to the hardware
4150c57212 Johannes Berg 2007-09-17 3204 * is enabled. This should turn on the hardware and must turn on
4150c57212 Johannes Berg 2007-09-17 3205 * frame reception (for possibly enabled monitor interfaces.)
4150c57212 Johannes Berg 2007-09-17 3206 * Returns negative error codes, these may be seen in userspace,
4150c57212 Johannes Berg 2007-09-17 3207 * or zero.
4150c57212 Johannes Berg 2007-09-17 3208 * When the device is started it should not have a MAC address
4150c57212 Johannes Berg 2007-09-17 3209 * to avoid acknowledging frames before a non-monitor device
4150c57212 Johannes Berg 2007-09-17 3210 * is added.
e1781ed33a Kalle Valo 2009-12-23 3211 * Must be implemented and can sleep.
75a5f0ccfd Johannes Berg 2007-09-18 3212 *
75a5f0ccfd Johannes Berg 2007-09-18 3213 * @stop: Called after last netdevice attached to the hardware
4150c57212 Johannes Berg 2007-09-17 3214 * is disabled. This should turn off the hardware (at least
4150c57212 Johannes Berg 2007-09-17 3215 * it must turn off frame reception.)
4150c57212 Johannes Berg 2007-09-17 3216 * May be called right after add_interface if that rejects
42935ecaf4 Luis R. Rodriguez 2009-07-29 3217 * an interface. If you added any work onto the mac80211 workqueue
42935ecaf4 Luis R. Rodriguez 2009-07-29 3218 * you should ensure to cancel it on this callback.
e1781ed33a Kalle Valo 2009-12-23 3219 * Must be implemented and can sleep.
75a5f0ccfd Johannes Berg 2007-09-18 3220 *
eecc48000a Johannes Berg 2011-05-04 3221 * @suspend: Suspend the device; mac80211 itself will quiesce before and
eecc48000a Johannes Berg 2011-05-04 3222 * stop transmitting and doing any other configuration, and then
eecc48000a Johannes Berg 2011-05-04 3223 * ask the device to suspend. This is only invoked when WoWLAN is
eecc48000a Johannes Berg 2011-05-04 3224 * configured, otherwise the device is deconfigured completely and
eecc48000a Johannes Berg 2011-05-04 3225 * reconfigured at resume time.
2b4562dfd6 Johannes Berg 2011-07-02 3226 * The driver may also impose special conditions under which it
2b4562dfd6 Johannes Berg 2011-07-02 3227 * wants to use the "normal" suspend (deconfigure), say if it only
2b4562dfd6 Johannes Berg 2011-07-02 3228 * supports WoWLAN when the device is associated. In this case, it
2b4562dfd6 Johannes Berg 2011-07-02 3229 * must return 1 from this function.
eecc48000a Johannes Berg 2011-05-04 3230 *
eecc48000a Johannes Berg 2011-05-04 3231 * @resume: If WoWLAN was configured, this indicates that mac80211 is
eecc48000a Johannes Berg 2011-05-04 3232 * now resuming its operation, after this the device must be fully
eecc48000a Johannes Berg 2011-05-04 3233 * functional again. If this returns an error, the only way out is
eecc48000a Johannes Berg 2011-05-04 3234 * to also unregister the device. If it returns 1, then mac80211
eecc48000a Johannes Berg 2011-05-04 3235 * will also go through the regular complete restart on resume.
eecc48000a Johannes Berg 2011-05-04 3236 *
d13e141481 Johannes Berg 2012-06-09 3237 * @set_wakeup: Enable or disable wakeup when WoWLAN configuration is
d13e141481 Johannes Berg 2012-06-09 3238 * modified. The reason is that device_set_wakeup_enable() is
d13e141481 Johannes Berg 2012-06-09 3239 * supposed to be called when the configuration changes, not only
d13e141481 Johannes Berg 2012-06-09 3240 * in suspend().
d13e141481 Johannes Berg 2012-06-09 3241 *
75a5f0ccfd Johannes Berg 2007-09-18 3242 * @add_interface: Called when a netdevice attached to the hardware is
e37d4dffdf Bob Copeland 2008-10-20 3243 * enabled. Because it is not called for monitor mode devices, @start
75a5f0ccfd Johannes Berg 2007-09-18 3244 * and @stop must be implemented.
4150c57212 Johannes Berg 2007-09-17 3245 * The driver should perform any initialization it needs before
4150c57212 Johannes Berg 2007-09-17 3246 * the device can be enabled. The initial configuration for the
4150c57212 Johannes Berg 2007-09-17 3247 * interface is given in the conf parameter.
75a5f0ccfd Johannes Berg 2007-09-18 3248 * The callback may refuse to add an interface by returning a
75a5f0ccfd Johannes Berg 2007-09-18 3249 * negative error code (which will be seen in userspace.)
e1781ed33a Kalle Valo 2009-12-23 3250 * Must be implemented and can sleep.
75a5f0ccfd Johannes Berg 2007-09-18 3251 *
34d4bc4d41 Johannes Berg 2010-08-27 3252 * @change_interface: Called when a netdevice changes type. This callback
34d4bc4d41 Johannes Berg 2010-08-27 3253 * is optional, but only if it is supported can interface types be
34d4bc4d41 Johannes Berg 2010-08-27 3254 * switched while the interface is UP. The callback may sleep.
34d4bc4d41 Johannes Berg 2010-08-27 3255 * Note that while an interface is being switched, it will not be
34d4bc4d41 Johannes Berg 2010-08-27 3256 * found by the interface iteration callbacks.
34d4bc4d41 Johannes Berg 2010-08-27 3257 *
75a5f0ccfd Johannes Berg 2007-09-18 3258 * @remove_interface: Notifies a driver that an interface is going down.
75a5f0ccfd Johannes Berg 2007-09-18 3259 * The @stop callback is called after this if it is the last interface
75a5f0ccfd Johannes Berg 2007-09-18 3260 * and no monitor interfaces are present.
4150c57212 Johannes Berg 2007-09-17 3261 * When all interfaces are removed, the MAC address in the hardware
4150c57212 Johannes Berg 2007-09-17 3262 * must be cleared so the device no longer acknowledges packets,
4150c57212 Johannes Berg 2007-09-17 3263 * the mac_addr member of the conf structure is, however, set to the
4150c57212 Johannes Berg 2007-09-17 3264 * MAC address of the device going away.
e1781ed33a Kalle Valo 2009-12-23 3265 * Hence, this callback must be implemented. It can sleep.
4150c57212 Johannes Berg 2007-09-17 3266 *
75a5f0ccfd Johannes Berg 2007-09-18 3267 * @config: Handler for configuration requests. IEEE 802.11 code calls this
75a5f0ccfd Johannes Berg 2007-09-18 3268 * function to change hardware configuration, e.g., channel.
6dd1bf3118 Bob Copeland 2009-01-08 3269 * This function should never fail but returns a negative error code
e1781ed33a Kalle Valo 2009-12-23 3270 * if it does. The callback can sleep.
4150c57212 Johannes Berg 2007-09-17 3271 *
471b3efdfc Johannes Berg 2007-12-28 3272 * @bss_info_changed: Handler for configuration requests related to BSS
471b3efdfc Johannes Berg 2007-12-28 3273 * parameters that may vary during BSS's lifespan, and may affect low
471b3efdfc Johannes Berg 2007-12-28 3274 * level driver (e.g. assoc/disassoc status, erp parameters).
471b3efdfc Johannes Berg 2007-12-28 3275 * This function should not be used if no BSS has been set, unless
471b3efdfc Johannes Berg 2007-12-28 3276 * for association indication. The @changed parameter indicates which
e1781ed33a Kalle Valo 2009-12-23 3277 * of the bss parameters has changed when a call is made. The callback
e1781ed33a Kalle Valo 2009-12-23 3278 * can sleep.
471b3efdfc Johannes Berg 2007-12-28 3279 *
3ac64beecd Johannes Berg 2009-08-17 3280 * @prepare_multicast: Prepare for multicast filter configuration.
3ac64beecd Johannes Berg 2009-08-17 3281 * This callback is optional, and its return value is passed
3ac64beecd Johannes Berg 2009-08-17 3282 * to configure_filter(). This callback must be atomic.
3ac64beecd Johannes Berg 2009-08-17 3283 *
75a5f0ccfd Johannes Berg 2007-09-18 3284 * @configure_filter: Configure the device's RX filter.
75a5f0ccfd Johannes Berg 2007-09-18 3285 * See the section "Frame filtering" for more information.
e1781ed33a Kalle Valo 2009-12-23 3286 * This callback must be implemented and can sleep.
8f20fc2498 Johannes Berg 2007-08-28 3287 *
1b09b5568e Andrei Otcheretianski 2015-08-15 3288 * @config_iface_filter: Configure the interface's RX filter.
1b09b5568e Andrei Otcheretianski 2015-08-15 3289 * This callback is optional and is used to configure which frames
1b09b5568e Andrei Otcheretianski 2015-08-15 3290 * should be passed to mac80211. The filter_flags is the combination
1b09b5568e Andrei Otcheretianski 2015-08-15 3291 * of FIF_* flags. The changed_flags is a bit mask that indicates
1b09b5568e Andrei Otcheretianski 2015-08-15 3292 * which flags are changed.
1b09b5568e Andrei Otcheretianski 2015-08-15 3293 * This callback can sleep.
1b09b5568e Andrei Otcheretianski 2015-08-15 3294 *
546c80c91f Luis R. Rodriguez 2008-08-14 3295 * @set_tim: Set TIM bit. mac80211 calls this function when a TIM bit
17741cdc26 Johannes Berg 2008-09-11 3296 * must be set or cleared for a given STA. Must be atomic.
11a843b7e1 Johannes Berg 2007-08-28 3297 *
75a5f0ccfd Johannes Berg 2007-09-18 3298 * @set_key: See the section "Hardware crypto acceleration"
e1781ed33a Kalle Valo 2009-12-23 3299 * This callback is only called between add_interface and
e1781ed33a Kalle Valo 2009-12-23 3300 * remove_interface calls, i.e. while the given virtual interface
dc822b5db4 Johannes Berg 2008-12-29 3301 * is enabled.
6dd1bf3118 Bob Copeland 2009-01-08 3302 * Returns a negative error code if the key can't be added.
e1781ed33a Kalle Valo 2009-12-23 3303 * The callback can sleep.
11a843b7e1 Johannes Berg 2007-08-28 3304 *
9ae4fda332 Emmanuel Grumbach 2008-03-20 3305 * @update_tkip_key: See the section "Hardware crypto acceleration"
9ae4fda332 Emmanuel Grumbach 2008-03-20 3306 * This callback will be called in the context of Rx. Called for drivers
9ae4fda332 Emmanuel Grumbach 2008-03-20 3307 * which set IEEE80211_KEY_FLAG_TKIP_REQ_RX_P1_KEY.
eb807fb238 Kalle Valo 2010-01-24 3308 * The callback must be atomic.
9ae4fda332 Emmanuel Grumbach 2008-03-20 3309 *
c68f4b892c Johannes Berg 2011-07-05 3310 * @set_rekey_data: If the device supports GTK rekeying, for example while the
c68f4b892c Johannes Berg 2011-07-05 3311 * host is suspended, it can assign this callback to retrieve the data
c68f4b892c Johannes Berg 2011-07-05 3312 * necessary to do GTK rekeying, this is the KEK, KCK and replay counter.
c68f4b892c Johannes Berg 2011-07-05 3313 * After rekeying was done it should (for example during resume) notify
c68f4b892c Johannes Berg 2011-07-05 3314 * userspace of the new replay counter using ieee80211_gtk_rekey_notify().
c68f4b892c Johannes Berg 2011-07-05 3315 *
de5fad8157 Yoni Divinsky 2012-05-30 3316 * @set_default_unicast_key: Set the default (unicast) key index, useful for
de5fad8157 Yoni Divinsky 2012-05-30 3317 * WEP when the device sends data packets autonomously, e.g. for ARP
de5fad8157 Yoni Divinsky 2012-05-30 3318 * offloading. The index can be 0-3, or -1 for unsetting it.
de5fad8157 Yoni Divinsky 2012-05-30 3319 *
75a5f0ccfd Johannes Berg 2007-09-18 3320 * @hw_scan: Ask the hardware to service the scan request, no need to start
8318d78a44 Johannes Berg 2008-01-24 3321 * the scan state machine in stack. The scan must honour the channel
9050bdd858 Kalle Valo 2009-03-22 3322 * configuration done by the regulatory agent in the wiphy's
9050bdd858 Kalle Valo 2009-03-22 3323 * registered bands. The hardware (or the driver) needs to make sure
de95a54b1a Johannes Berg 2009-04-01 3324 * that power save is disabled.
de95a54b1a Johannes Berg 2009-04-01 3325 * The @req ie/ie_len members are rewritten by mac80211 to contain the
de95a54b1a Johannes Berg 2009-04-01 3326 * entire IEs after the SSID, so that drivers need not look at these
de95a54b1a Johannes Berg 2009-04-01 3327 * at all but just send them after the SSID -- mac80211 includes the
de95a54b1a Johannes Berg 2009-04-01 3328 * (extended) supported rates and HT information (where applicable).
de95a54b1a Johannes Berg 2009-04-01 3329 * When the scan finishes, ieee80211_scan_completed() must be called;
de95a54b1a Johannes Berg 2009-04-01 3330 * note that it also must be called when the scan cannot finish due to
de95a54b1a Johannes Berg 2009-04-01 3331 * any error unless this callback returned a negative error code.
e9da68ddea Johannes Berg 2018-10-18 3332 * This callback is also allowed to return the special return value 1,
e9da68ddea Johannes Berg 2018-10-18 3333 * this indicates that hardware scan isn't desirable right now and a
e9da68ddea Johannes Berg 2018-10-18 3334 * software scan should be done instead. A driver wishing to use this
e9da68ddea Johannes Berg 2018-10-18 3335 * capability must ensure its (hardware) scan capabilities aren't
e9da68ddea Johannes Berg 2018-10-18 3336 * advertised as more capable than mac80211's software scan is.
e1781ed33a Kalle Valo 2009-12-23 3337 * The callback can sleep.
11a843b7e1 Johannes Berg 2007-08-28 3338 *
b856439b1b Eliad Peller 2011-06-13 3339 * @cancel_hw_scan: Ask the low-level tp cancel the active hw scan.
b856439b1b Eliad Peller 2011-06-13 3340 * The driver should ask the hardware to cancel the scan (if possible),
b856439b1b Eliad Peller 2011-06-13 3341 * but the scan will be completed only after the driver will call
b856439b1b Eliad Peller 2011-06-13 3342 * ieee80211_scan_completed().
b856439b1b Eliad Peller 2011-06-13 3343 * This callback is needed for wowlan, to prevent enqueueing a new
b856439b1b Eliad Peller 2011-06-13 3344 * scan_work after the low-level driver was already suspended.
b856439b1b Eliad Peller 2011-06-13 3345 * The callback can sleep.
b856439b1b Eliad Peller 2011-06-13 3346 *
79f460ca49 Luciano Coelho 2011-05-11 3347 * @sched_scan_start: Ask the hardware to start scanning repeatedly at
79f460ca49 Luciano Coelho 2011-05-11 3348 * specific intervals. The driver must call the
79f460ca49 Luciano Coelho 2011-05-11 3349 * ieee80211_sched_scan_results() function whenever it finds results.
79f460ca49 Luciano Coelho 2011-05-11 3350 * This process will continue until sched_scan_stop is called.
79f460ca49 Luciano Coelho 2011-05-11 3351 *
79f460ca49 Luciano Coelho 2011-05-11 3352 * @sched_scan_stop: Tell the hardware to stop an ongoing scheduled scan.
37e3308cb2 Johannes Berg 2014-02-17 3353 * In this case, ieee80211_sched_scan_stopped() must not be called.
79f460ca49 Luciano Coelho 2011-05-11 3354 *
80e775bf08 Michael Buesch 2009-02-20 3355 * @sw_scan_start: Notifier function that is called just before a software scan
80e775bf08 Michael Buesch 2009-02-20 3356 * is started. Can be NULL, if the driver doesn't need this notification.
a344d6778a Johannes Berg 2014-06-12 3357 * The mac_addr parameter allows supporting NL80211_SCAN_FLAG_RANDOM_ADDR,
a344d6778a Johannes Berg 2014-06-12 3358 * the driver may set the NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR flag if it
a344d6778a Johannes Berg 2014-06-12 3359 * can use this parameter. The callback can sleep.
80e775bf08 Michael Buesch 2009-02-20 3360 *
e1781ed33a Kalle Valo 2009-12-23 3361 * @sw_scan_complete: Notifier function that is called just after a
e1781ed33a Kalle Valo 2009-12-23 3362 * software scan finished. Can be NULL, if the driver doesn't need
e1781ed33a Kalle Valo 2009-12-23 3363 * this notification.
e1781ed33a Kalle Valo 2009-12-23 3364 * The callback can sleep.
80e775bf08 Michael Buesch 2009-02-20 3365 *
6dd1bf3118 Bob Copeland 2009-01-08 3366 * @get_stats: Return low-level statistics.
6dd1bf3118 Bob Copeland 2009-01-08 3367 * Returns zero if statistics are available.
e1781ed33a Kalle Valo 2009-12-23 3368 * The callback can sleep.
7ac1bd6aec Johannes Berg 2007-09-14 3369 *
9352c19f63 Johannes Berg 2015-04-20 3370 * @get_key_seq: If your device implements encryption in hardware and does
9352c19f63 Johannes Berg 2015-04-20 3371 * IV/PN assignment then this callback should be provided to read the
9352c19f63 Johannes Berg 2015-04-20 3372 * IV/PN for the given key from hardware.
e1781ed33a Kalle Valo 2009-12-23 3373 * The callback must be atomic.
75a5f0ccfd Johannes Berg 2007-09-18 3374 *
f23a478075 Arik Nemtsov 2010-11-08 3375 * @set_frag_threshold: Configuration of fragmentation threshold. Assign this
f3fe4e93dd Sara Sharon 2016-10-18 3376 * if the device does fragmentation by itself. Note that to prevent the
f3fe4e93dd Sara Sharon 2016-10-18 3377 * stack from doing fragmentation IEEE80211_HW_SUPPORTS_TX_FRAG
f3fe4e93dd Sara Sharon 2016-10-18 3378 * should be set as well.
f23a478075 Arik Nemtsov 2010-11-08 3379 * The callback can sleep.
f23a478075 Arik Nemtsov 2010-11-08 3380 *
75a5f0ccfd Johannes Berg 2007-09-18 3381 * @set_rts_threshold: Configuration of RTS threshold (if device needs it)
e1781ed33a Kalle Valo 2009-12-23 3382 * The callback can sleep.
75a5f0ccfd Johannes Berg 2007-09-18 3383 *
34e895075e Johannes Berg 2010-02-03 3384 * @sta_add: Notifies low level driver about addition of an associated station,
34e895075e Johannes Berg 2010-02-03 3385 * AP, IBSS/WDS/mesh peer etc. This callback can sleep.
34e895075e Johannes Berg 2010-02-03 3386 *
34e895075e Johannes Berg 2010-02-03 3387 * @sta_remove: Notifies low level driver about removal of an associated
6a9d1b91f3 Johannes Berg 2013-12-04 3388 * station, AP, IBSS/WDS/mesh peer etc. Note that after the callback
6a9d1b91f3 Johannes Berg 2013-12-04 3389 * returns it isn't safe to use the pointer, not even RCU protected;
6a9d1b91f3 Johannes Berg 2013-12-04 3390 * no RCU grace period is guaranteed between returning here and freeing
6a9d1b91f3 Johannes Berg 2013-12-04 3391 * the station. See @sta_pre_rcu_remove if needed.
6a9d1b91f3 Johannes Berg 2013-12-04 3392 * This callback can sleep.
34e895075e Johannes Berg 2010-02-03 3393 *
77d2ece6fd Sujith Manoharan 2012-11-20 3394 * @sta_add_debugfs: Drivers can use this callback to add debugfs files
77d2ece6fd Sujith Manoharan 2012-11-20 3395 * when a station is added to mac80211's station list. This callback
c7e9dbcf09 Johannes Berg 2016-09-14 3396 * should be within a CONFIG_MAC80211_DEBUGFS conditional. This
c7e9dbcf09 Johannes Berg 2016-09-14 3397 * callback can sleep.
77d2ece6fd Sujith Manoharan 2012-11-20 3398 *
34e895075e Johannes Berg 2010-02-03 3399 * @sta_notify: Notifies low level driver about power state transition of an
d057e5a381 Arik Nemtsov 2011-01-31 3400 * associated station, AP, IBSS/WDS/mesh peer etc. For a VIF operating
d057e5a381 Arik Nemtsov 2011-01-31 3401 * in AP mode, this callback will not be called when the flag
d057e5a381 Arik Nemtsov 2011-01-31 3402 * %IEEE80211_HW_AP_LINK_PS is set. Must be atomic.
4571d3bf87 Christian Lamparter 2008-11-30 3403 *
f09603a259 Johannes Berg 2012-01-20 3404 * @sta_state: Notifies low level driver about state transition of a
f09603a259 Johannes Berg 2012-01-20 3405 * station (which can be the AP, a client, IBSS/WDS/mesh peer etc.)
f09603a259 Johannes Berg 2012-01-20 3406 * This callback is mutually exclusive with @sta_add/@sta_remove.
f09603a259 Johannes Berg 2012-01-20 3407 * It must not fail for down transitions but may fail for transitions
6a9d1b91f3 Johannes Berg 2013-12-04 3408 * up the list of states. Also note that after the callback returns it
6a9d1b91f3 Johannes Berg 2013-12-04 3409 * isn't safe to use the pointer, not even RCU protected - no RCU grace
6a9d1b91f3 Johannes Berg 2013-12-04 3410 * period is guaranteed between returning here and freeing the station.
6a9d1b91f3 Johannes Berg 2013-12-04 3411 * See @sta_pre_rcu_remove if needed.
6a9d1b91f3 Johannes Berg 2013-12-04 3412 * The callback can sleep.
6a9d1b91f3 Johannes Berg 2013-12-04 3413 *
6a9d1b91f3 Johannes Berg 2013-12-04 3414 * @sta_pre_rcu_remove: Notify driver about station removal before RCU
6a9d1b91f3 Johannes Berg 2013-12-04 3415 * synchronisation. This is useful if a driver needs to have station
6a9d1b91f3 Johannes Berg 2013-12-04 3416 * pointers protected using RCU, it can then use this call to clear
6a9d1b91f3 Johannes Berg 2013-12-04 3417 * the pointers instead of waiting for an RCU grace period to elapse
6a9d1b91f3 Johannes Berg 2013-12-04 3418 * in @sta_state.
f09603a259 Johannes Berg 2012-01-20 3419 * The callback can sleep.
f09603a259 Johannes Berg 2012-01-20 3420 *
8f727ef3c4 Johannes Berg 2012-03-30 3421 * @sta_rc_update: Notifies the driver of changes to the bitrates that can be
8f727ef3c4 Johannes Berg 2012-03-30 3422 * used to transmit to the station. The changes are advertised with bits
8f727ef3c4 Johannes Berg 2012-03-30 3423 * from &enum ieee80211_rate_control_changed and the values are reflected
8f727ef3c4 Johannes Berg 2012-03-30 3424 * in the station data. This callback should only be used when the driver
8f727ef3c4 Johannes Berg 2012-03-30 3425 * uses hardware rate control (%IEEE80211_HW_HAS_RATE_CONTROL) since
8f727ef3c4 Johannes Berg 2012-03-30 3426 * otherwise the rate control algorithm is notified directly.
8f727ef3c4 Johannes Berg 2012-03-30 3427 * Must be atomic.
f815e2b3c0 Johannes Berg 2014-11-19 3428 * @sta_rate_tbl_update: Notifies the driver that the rate table changed. This
f815e2b3c0 Johannes Berg 2014-11-19 3429 * is only used if the configured rate control algorithm actually uses
f815e2b3c0 Johannes Berg 2014-11-19 3430 * the new rate table API, and is therefore optional. Must be atomic.
8f727ef3c4 Johannes Berg 2012-03-30 3431 *
2b9a7e1bac Johannes Berg 2014-11-17 3432 * @sta_statistics: Get statistics for this station. For example with beacon
2b9a7e1bac Johannes Berg 2014-11-17 3433 * filtering, the statistics kept by mac80211 might not be accurate, so
2b9a7e1bac Johannes Berg 2014-11-17 3434 * let the driver pre-fill the statistics. The driver can fill most of
2b9a7e1bac Johannes Berg 2014-11-17 3435 * the values (indicating which by setting the filled bitmap), but not
2b9a7e1bac Johannes Berg 2014-11-17 3436 * all of them make sense - see the source for which ones are possible.
2b9a7e1bac Johannes Berg 2014-11-17 3437 * Statistics that the driver doesn't fill will be filled by mac80211.
2b9a7e1bac Johannes Berg 2014-11-17 3438 * The callback can sleep.
2b9a7e1bac Johannes Berg 2014-11-17 3439 *
75a5f0ccfd Johannes Berg 2007-09-18 3440 * @conf_tx: Configure TX queue parameters (EDCF (aifs, cw_min, cw_max),
fe3fa82731 Johannes Berg 2008-09-08 3441 * bursting) for a hardware TX queue.
6dd1bf3118 Bob Copeland 2009-01-08 3442 * Returns a negative error code on failure.
e1781ed33a Kalle Valo 2009-12-23 3443 * The callback can sleep.
75a5f0ccfd Johannes Berg 2007-09-18 3444 *
75a5f0ccfd Johannes Berg 2007-09-18 3445 * @get_tsf: Get the current TSF timer value from firmware/hardware. Currently,
3b5d665b51 Alina Friedrichsen 2009-01-24 3446 * this is only used for IBSS mode BSSID merging and debugging. Is not a
7b08b3b4a9 Alina Friedrichsen 2009-02-05 3447 * required function.
e1781ed33a Kalle Valo 2009-12-23 3448 * The callback can sleep.
3b5d665b51 Alina Friedrichsen 2009-01-24 3449 *
3b5d665b51 Alina Friedrichsen 2009-01-24 3450 * @set_tsf: Set the TSF timer to the specified value in the firmware/hardware.
3b5d665b51 Alina Friedrichsen 2009-01-24 3451 * Currently, this is only used for IBSS mode debugging. Is not a
7b08b3b4a9 Alina Friedrichsen 2009-02-05 3452 * required function.
e1781ed33a Kalle Valo 2009-12-23 3453 * The callback can sleep.
75a5f0ccfd Johannes Berg 2007-09-18 3454 *
354d381baf Pedersen, Thomas 2016-09-28 3455 * @offset_tsf: Offset the TSF timer by the specified value in the
354d381baf Pedersen, Thomas 2016-09-28 3456 * firmware/hardware. Preferred to set_tsf as it avoids delay between
354d381baf Pedersen, Thomas 2016-09-28 3457 * calling set_tsf() and hardware getting programmed, which will show up
354d381baf Pedersen, Thomas 2016-09-28 3458 * as TSF delay. Is not a required function.
354d381baf Pedersen, Thomas 2016-09-28 3459 * The callback can sleep.
354d381baf Pedersen, Thomas 2016-09-28 3460 *
75a5f0ccfd Johannes Berg 2007-09-18 3461 * @reset_tsf: Reset the TSF timer and allow firmware/hardware to synchronize
75a5f0ccfd Johannes Berg 2007-09-18 3462 * with other STAs in the IBSS. This is only used in IBSS mode. This
75a5f0ccfd Johannes Berg 2007-09-18 3463 * function is optional if the firmware/hardware takes full care of
75a5f0ccfd Johannes Berg 2007-09-18 3464 * TSF synchronization.
e1781ed33a Kalle Valo 2009-12-23 3465 * The callback can sleep.
75a5f0ccfd Johannes Berg 2007-09-18 3466 *
75a5f0ccfd Johannes Berg 2007-09-18 3467 * @tx_last_beacon: Determine whether the last IBSS beacon was sent by us.
75a5f0ccfd Johannes Berg 2007-09-18 3468 * This is needed only for IBSS mode and the result of this function is
75a5f0ccfd Johannes Berg 2007-09-18 3469 * used to determine whether to reply to Probe Requests.
6dd1bf3118 Bob Copeland 2009-01-08 3470 * Returns non-zero if this device sent the last beacon.
e1781ed33a Kalle Valo 2009-12-23 3471 * The callback can sleep.
d3c990fb26 Ron Rindjunsky 2007-11-26 3472 *
4e8998f09b Randy Dunlap 2010-05-21 3473 * @get_survey: Return per-channel survey information
4e8998f09b Randy Dunlap 2010-05-21 3474 *
1f87f7d3a3 Johannes Berg 2009-06-02 3475 * @rfkill_poll: Poll rfkill hardware state. If you need this, you also
1f87f7d3a3 Johannes Berg 2009-06-02 3476 * need to set wiphy->rfkill_poll to %true before registration,
1f87f7d3a3 Johannes Berg 2009-06-02 3477 * and need to call wiphy_rfkill_set_hw_state() in the callback.
e1781ed33a Kalle Valo 2009-12-23 3478 * The callback can sleep.
aff89a9b90 Johannes Berg 2009-07-01 3479 *
310bc676e3 Lukáš Turek 2009-12-21 3480 * @set_coverage_class: Set slot time for given coverage class as specified
310bc676e3 Lukáš Turek 2009-12-21 3481 * in IEEE 802.11-2007 section 17.3.8.6 and modify ACK timeout
a4bcaf5556 Lorenzo Bianconi 2014-09-04 3482 * accordingly; coverage class equals to -1 to enable ACK timeout
a4bcaf5556 Lorenzo Bianconi 2014-09-04 3483 * estimation algorithm (dynack). To disable dynack set valid value for
a4bcaf5556 Lorenzo Bianconi 2014-09-04 3484 * coverage class. This callback is not required and may sleep.
310bc676e3 Lukáš Turek 2009-12-21 3485 *
52981cd794 David Spinadel 2013-07-31 3486 * @testmode_cmd: Implement a cfg80211 test mode command. The passed @vif may
52981cd794 David Spinadel 2013-07-31 3487 * be %NULL. The callback can sleep.
71063f0e89 Wey-Yi Guy 2011-05-20 3488 * @testmode_dump: Implement a cfg80211 test mode dump. The callback can sleep.
a80f7c0b08 Johannes Berg 2009-12-23 3489 *
a80f7c0b08 Johannes Berg 2009-12-23 3490 * @flush: Flush all pending frames from the hardware queue, making sure
39ecc01d1b Johannes Berg 2013-02-13 3491 * that the hardware queues are empty. The @queues parameter is a bitmap
39ecc01d1b Johannes Berg 2013-02-13 3492 * of queues to flush, which is useful if different virtual interfaces
39ecc01d1b Johannes Berg 2013-02-13 3493 * use different hardware queues; it may also indicate all queues.
39ecc01d1b Johannes Berg 2013-02-13 3494 * If the parameter @drop is set to %true, pending frames may be dropped.
77be2c54c5 Emmanuel Grumbach 2014-03-27 3495 * Note that vif can be NULL.
39ecc01d1b Johannes Berg 2013-02-13 3496 * The callback can sleep.
5ce6e438d5 Johannes Berg 2010-05-11 3497 *
5ce6e438d5 Johannes Berg 2010-05-11 3498 * @channel_switch: Drivers that need (or want) to offload the channel
5ce6e438d5 Johannes Berg 2010-05-11 3499 * switch operation for CSAs received from the AP may implement this
5ce6e438d5 Johannes Berg 2010-05-11 3500 * callback. They must then call ieee80211_chswitch_done() to indicate
5ce6e438d5 Johannes Berg 2010-05-11 3501 * completion of the channel switch.
4e6cbfd09c John W. Linville 2010-07-29 3502 *
79b1c460a0 Bruno Randolf 2010-11-24 3503 * @set_antenna: Set antenna configuration (tx_ant, rx_ant) on the device.
79b1c460a0 Bruno Randolf 2010-11-24 3504 * Parameters are bitmaps of allowed antennas to use for TX/RX. Drivers may
79b1c460a0 Bruno Randolf 2010-11-24 3505 * reject TX/RX mask combinations they cannot support by returning -EINVAL
79b1c460a0 Bruno Randolf 2010-11-24 3506 * (also see nl80211.h @NL80211_ATTR_WIPHY_ANTENNA_TX).
79b1c460a0 Bruno Randolf 2010-11-24 3507 *
79b1c460a0 Bruno Randolf 2010-11-24 3508 * @get_antenna: Get current antenna configuration from device (tx_ant, rx_ant).
4976b4eb9d Johannes Berg 2011-01-04 3509 *
4976b4eb9d Johannes Berg 2011-01-04 3510 * @remain_on_channel: Starts an off-channel period on the given channel, must
4976b4eb9d Johannes Berg 2011-01-04 3511 * call back to ieee80211_ready_on_channel() when on that channel. Note
4976b4eb9d Johannes Berg 2011-01-04 3512 * that normal channel traffic is not stopped as this is intended for hw
4976b4eb9d Johannes Berg 2011-01-04 3513 * offload. Frames to transmit on the off-channel channel are transmitted
4976b4eb9d Johannes Berg 2011-01-04 3514 * normally except for the %IEEE80211_TX_CTL_TX_OFFCHAN flag. When the
4976b4eb9d Johannes Berg 2011-01-04 3515 * duration (which will always be non-zero) expires, the driver must call
196ac1c13d Johannes Berg 2012-06-05 3516 * ieee80211_remain_on_channel_expired().
196ac1c13d Johannes Berg 2012-06-05 3517 * Note that this callback may be called while the device is in IDLE and
196ac1c13d Johannes Berg 2012-06-05 3518 * must be accepted in this case.
196ac1c13d Johannes Berg 2012-06-05 3519 * This callback may sleep.
4976b4eb9d Johannes Berg 2011-01-04 3520 * @cancel_remain_on_channel: Requests that an ongoing off-channel period is
4976b4eb9d Johannes Berg 2011-01-04 3521 * aborted before it expires. This callback may sleep.
38c091590f John W. Linville 2011-03-07 3522 *
38c091590f John W. Linville 2011-03-07 3523 * @set_ringparam: Set tx and rx ring sizes.
38c091590f John W. Linville 2011-03-07 3524 *
38c091590f John W. Linville 2011-03-07 3525 * @get_ringparam: Get tx and rx ring current and maximum sizes.
e8306f9894 Vivek Natarajan 2011-04-06 3526 *
e8306f9894 Vivek Natarajan 2011-04-06 3527 * @tx_frames_pending: Check if there is any pending frame in the hardware
e8306f9894 Vivek Natarajan 2011-04-06 3528 * queues before entering power save.
bdbfd6b582 Sujith Manoharan 2011-04-27 3529 *
bdbfd6b582 Sujith Manoharan 2011-04-27 3530 * @set_bitrate_mask: Set a mask of rates to be used for rate control selection
bdbfd6b582 Sujith Manoharan 2011-04-27 3531 * when transmitting a frame. Currently only legacy rates are handled.
bdbfd6b582 Sujith Manoharan 2011-04-27 3532 * The callback can sleep.
a818292952 Emmanuel Grumbach 2015-03-16 3533 * @event_callback: Notify driver about any event in mac80211. See
a818292952 Emmanuel Grumbach 2015-03-16 3534 * &enum ieee80211_event_type for the different types.
6382246e89 Emmanuel Grumbach 2015-04-20 3535 * The callback must be atomic.
4049e09acd Johannes Berg 2011-09-29 3536 *
4049e09acd Johannes Berg 2011-09-29 3537 * @release_buffered_frames: Release buffered frames according to the given
4049e09acd Johannes Berg 2011-09-29 3538 * parameters. In the case where the driver buffers some frames for
4049e09acd Johannes Berg 2011-09-29 3539 * sleeping stations mac80211 will use this callback to tell the driver
4049e09acd Johannes Berg 2011-09-29 3540 * to release some frames, either for PS-poll or uAPSD.
e227867f12 Masanari Iida 2014-02-18 3541 * Note that if the @more_data parameter is %false the driver must check
4049e09acd Johannes Berg 2011-09-29 3542 * if there are more frames on the given TIDs, and if there are more than
4049e09acd Johannes Berg 2011-09-29 3543 * the frames being released then it must still set the more-data bit in
4049e09acd Johannes Berg 2011-09-29 3544 * the frame. If the @more_data parameter is %true, then of course the
4049e09acd Johannes Berg 2011-09-29 3545 * more-data bit must always be set.
4049e09acd Johannes Berg 2011-09-29 3546 * The @tids parameter tells the driver which TIDs to release frames
4049e09acd Johannes Berg 2011-09-29 3547 * from, for PS-poll it will always have only a single bit set.
deeaee197b Johannes Berg 2011-09-29 3548 * In the case this is used for a PS-poll initiated release, the
deeaee197b Johannes Berg 2011-09-29 3549 * @num_frames parameter will always be 1 so code can be shared. In
deeaee197b Johannes Berg 2011-09-29 3550 * this case the driver must also set %IEEE80211_TX_STATUS_EOSP flag
deeaee197b Johannes Berg 2011-09-29 3551 * on the TX status (and must report TX status) so that the PS-poll
deeaee197b Johannes Berg 2011-09-29 3552 * period is properly ended. This is used to avoid sending multiple
deeaee197b Johannes Berg 2011-09-29 3553 * responses for a retried PS-poll frame.
4049e09acd Johannes Berg 2011-09-29 3554 * In the case this is used for uAPSD, the @num_frames parameter may be
4049e09acd Johannes Berg 2011-09-29 3555 * bigger than one, but the driver may send fewer frames (it must send
4049e09acd Johannes Berg 2011-09-29 3556 * at least one, however). In this case it is also responsible for
47086fc51a Johannes Berg 2011-09-29 3557 * setting the EOSP flag in the QoS header of the frames. Also, when the
47086fc51a Johannes Berg 2011-09-29 3558 * service period ends, the driver must set %IEEE80211_TX_STATUS_EOSP
37fbd90800 Johannes Berg 2011-09-29 3559 * on the last frame in the SP. Alternatively, it may call the function
e943789edb Johannes Berg 2013-02-15 3560 * ieee80211_sta_eosp() to inform mac80211 of the end of the SP.
4049e09acd Johannes Berg 2011-09-29 3561 * This callback must be atomic.
40b9640883 Johannes Berg 2011-09-29 3562 * @allow_buffered_frames: Prepare device to allow the given number of frames
40b9640883 Johannes Berg 2011-09-29 3563 * to go out to the given station. The frames will be sent by mac80211
40b9640883 Johannes Berg 2011-09-29 3564 * via the usual TX path after this call. The TX information for frames
02f2f1a951 Johannes Berg 2012-02-27 3565 * released will also have the %IEEE80211_TX_CTL_NO_PS_BUFFER flag set
40b9640883 Johannes Berg 2011-09-29 3566 * and the last one will also have %IEEE80211_TX_STATUS_EOSP set. In case
40b9640883 Johannes Berg 2011-09-29 3567 * frames from multiple TIDs are released and the driver might reorder
40b9640883 Johannes Berg 2011-09-29 3568 * them between the TIDs, it must set the %IEEE80211_TX_STATUS_EOSP flag
40b9640883 Johannes Berg 2011-09-29 3569 * on the last frame and clear it on all others and also handle the EOSP
37fbd90800 Johannes Berg 2011-09-29 3570 * bit in the QoS header correctly. Alternatively, it can also call the
e943789edb Johannes Berg 2013-02-15 3571 * ieee80211_sta_eosp() function.
40b9640883 Johannes Berg 2011-09-29 3572 * The @tids parameter is a bitmap and tells the driver which TIDs the
40b9640883 Johannes Berg 2011-09-29 3573 * frames will be on; it will at most have two bits set.
40b9640883 Johannes Berg 2011-09-29 3574 * This callback must be atomic.
e352114fd6 Ben Greear 2012-04-23 3575 *
e352114fd6 Ben Greear 2012-04-23 3576 * @get_et_sset_count: Ethtool API to get string-set count.
e352114fd6 Ben Greear 2012-04-23 3577 *
e352114fd6 Ben Greear 2012-04-23 3578 * @get_et_stats: Ethtool API to get a set of u64 stats.
e352114fd6 Ben Greear 2012-04-23 3579 *
e352114fd6 Ben Greear 2012-04-23 3580 * @get_et_strings: Ethtool API to get a set of strings to describe stats
e352114fd6 Ben Greear 2012-04-23 3581 * and perhaps other supported types of ethtool data-sets.
e352114fd6 Ben Greear 2012-04-23 3582 *
a1845fc7c5 Johannes Berg 2012-06-27 3583 * @mgd_prepare_tx: Prepare for transmitting a management frame for association
a1845fc7c5 Johannes Berg 2012-06-27 3584 * before associated. In multi-channel scenarios, a virtual interface is
a1845fc7c5 Johannes Berg 2012-06-27 3585 * bound to a channel before it is associated, but as it isn't associated
a1845fc7c5 Johannes Berg 2012-06-27 3586 * yet it need not necessarily be given airtime, in particular since any
a1845fc7c5 Johannes Berg 2012-06-27 3587 * transmission to a P2P GO needs to be synchronized against the GO's
a1845fc7c5 Johannes Berg 2012-06-27 3588 * powersave state. mac80211 will call this function before transmitting a
a1845fc7c5 Johannes Berg 2012-06-27 3589 * management frame prior to having successfully associated to allow the
a1845fc7c5 Johannes Berg 2012-06-27 3590 * driver to give it channel time for the transmission, to get a response
a1845fc7c5 Johannes Berg 2012-06-27 3591 * and to be able to synchronize with the GO.
94ba92713f Ilan Peer 2018-02-19 3592 * For drivers that set %IEEE80211_HW_DEAUTH_NEED_MGD_TX_PREP, mac80211
94ba92713f Ilan Peer 2018-02-19 3593 * would also call this function before transmitting a deauthentication
94ba92713f Ilan Peer 2018-02-19 3594 * frame in case that no beacon was heard from the AP/P2P GO.
a1845fc7c5 Johannes Berg 2012-06-27 3595 * The callback will be called before each transmission and upon return
a1845fc7c5 Johannes Berg 2012-06-27 3596 * mac80211 will transmit the frame right away.
d4e36e5554 Ilan Peer 2018-04-20 3597 * If duration is greater than zero, mac80211 hints to the driver the
d4e36e5554 Ilan Peer 2018-04-20 3598 * duration for which the operation is requested.
a1845fc7c5 Johannes Berg 2012-06-27 3599 * The callback is optional and can (should!) sleep.
c3645eac47 Michal Kazior 2012-06-26 3600 *
ee10f2c779 Arik Nemtsov 2014-06-11 3601 * @mgd_protect_tdls_discover: Protect a TDLS discovery session. After sending
ee10f2c779 Arik Nemtsov 2014-06-11 3602 * a TDLS discovery-request, we expect a reply to arrive on the AP's
ee10f2c779 Arik Nemtsov 2014-06-11 3603 * channel. We must stay on the channel (no PSM, scan, etc.), since a TDLS
ee10f2c779 Arik Nemtsov 2014-06-11 3604 * setup-response is a direct packet not buffered by the AP.
ee10f2c779 Arik Nemtsov 2014-06-11 3605 * mac80211 will call this function just before the transmission of a TDLS
ee10f2c779 Arik Nemtsov 2014-06-11 3606 * discovery-request. The recommended period of protection is at least
ee10f2c779 Arik Nemtsov 2014-06-11 3607 * 2 * (DTIM period).
ee10f2c779 Arik Nemtsov 2014-06-11 3608 * The callback is optional and can sleep.
ee10f2c779 Arik Nemtsov 2014-06-11 3609 *
c3645eac47 Michal Kazior 2012-06-26 3610 * @add_chanctx: Notifies device driver about new channel context creation.
dcae9e0203 Chaitanya T K 2015-10-30 3611 * This callback may sleep.
c3645eac47 Michal Kazior 2012-06-26 3612 * @remove_chanctx: Notifies device driver about channel context destruction.
dcae9e0203 Chaitanya T K 2015-10-30 3613 * This callback may sleep.
c3645eac47 Michal Kazior 2012-06-26 3614 * @change_chanctx: Notifies device driver about channel context changes that
c3645eac47 Michal Kazior 2012-06-26 3615 * may happen when combining different virtual interfaces on the same
c3645eac47 Michal Kazior 2012-06-26 3616 * channel context with different settings
dcae9e0203 Chaitanya T K 2015-10-30 3617 * This callback may sleep.
c3645eac47 Michal Kazior 2012-06-26 3618 * @assign_vif_chanctx: Notifies device driver about channel context being bound
c3645eac47 Michal Kazior 2012-06-26 3619 * to vif. Possible use is for hw queue remapping.
dcae9e0203 Chaitanya T K 2015-10-30 3620 * This callback may sleep.
c3645eac47 Michal Kazior 2012-06-26 3621 * @unassign_vif_chanctx: Notifies device driver about channel context being
c3645eac47 Michal Kazior 2012-06-26 3622 * unbound from vif.
dcae9e0203 Chaitanya T K 2015-10-30 3623 * This callback may sleep.
1a5f0c13d1 Luciano Coelho 2014-05-23 3624 * @switch_vif_chanctx: switch a number of vifs from one chanctx to
1a5f0c13d1 Luciano Coelho 2014-05-23 3625 * another, as specified in the list of
1a5f0c13d1 Luciano Coelho 2014-05-23 3626 * @ieee80211_vif_chanctx_switch passed to the driver, according
1a5f0c13d1 Luciano Coelho 2014-05-23 3627 * to the mode defined in &ieee80211_chanctx_switch_mode.
dcae9e0203 Chaitanya T K 2015-10-30 3628 * This callback may sleep.
1a5f0c13d1 Luciano Coelho 2014-05-23 3629 *
1041638f2b Johannes Berg 2012-10-19 3630 * @start_ap: Start operation on the AP interface, this is called after all the
1041638f2b Johannes Berg 2012-10-19 3631 * information in bss_conf is set and beacon can be retrieved. A channel
1041638f2b Johannes Berg 2012-10-19 3632 * context is bound before this is called. Note that if the driver uses
1041638f2b Johannes Berg 2012-10-19 3633 * software scan or ROC, this (and @stop_ap) isn't called when the AP is
1041638f2b Johannes Berg 2012-10-19 3634 * just "paused" for scanning/ROC, which is indicated by the beacon being
1041638f2b Johannes Berg 2012-10-19 3635 * disabled/enabled via @bss_info_changed.
1041638f2b Johannes Berg 2012-10-19 3636 * @stop_ap: Stop operation on the AP interface.
9214ad7f9a Johannes Berg 2012-11-06 3637 *
cf2c92d840 Eliad Peller 2014-11-04 3638 * @reconfig_complete: Called after a call to ieee80211_restart_hw() and
cf2c92d840 Eliad Peller 2014-11-04 3639 * during resume, when the reconfiguration has completed.
cf2c92d840 Eliad Peller 2014-11-04 3640 * This can help the driver implement the reconfiguration step (and
cf2c92d840 Eliad Peller 2014-11-04 3641 * indicate mac80211 is ready to receive frames).
cf2c92d840 Eliad Peller 2014-11-04 3642 * This callback may sleep.
8f21b0adfe Johannes Berg 2013-01-11 3643 *
a65240c101 Johannes Berg 2013-01-14 3644 * @ipv6_addr_change: IPv6 address assignment on the given interface changed.
a65240c101 Johannes Berg 2013-01-14 3645 * Currently, this is only called for managed or P2P client interfaces.
a65240c101 Johannes Berg 2013-01-14 3646 * This callback is optional; it must not sleep.
73da7d5bab Simon Wunderlich 2013-07-11 3647 *
73da7d5bab Simon Wunderlich 2013-07-11 3648 * @channel_switch_beacon: Starts a channel switch to a new channel.
73da7d5bab Simon Wunderlich 2013-07-11 3649 * Beacons are modified to include CSA or ECSA IEs before calling this
73da7d5bab Simon Wunderlich 2013-07-11 3650 * function. The corresponding count fields in these IEs must be
66e01cf99e Luciano Coelho 2014-01-13 3651 * decremented, and when they reach 1 the driver must call
73da7d5bab Simon Wunderlich 2013-07-11 3652 * ieee80211_csa_finish(). Drivers which use ieee80211_beacon_get()
73da7d5bab Simon Wunderlich 2013-07-11 3653 * get the csa counter decremented by mac80211, but must check if it is
66e01cf99e Luciano Coelho 2014-01-13 3654 * 1 using ieee80211_csa_is_complete() after the beacon has been
73da7d5bab Simon Wunderlich 2013-07-11 3655 * transmitted and then call ieee80211_csa_finish().
66e01cf99e Luciano Coelho 2014-01-13 3656 * If the CSA count starts as zero or 1, this function will not be called,
66e01cf99e Luciano Coelho 2014-01-13 3657 * since there won't be any time to beacon before the switch anyway.
6d027bcc8a Luciano Coelho 2014-10-08 3658 * @pre_channel_switch: This is an optional callback that is called
6d027bcc8a Luciano Coelho 2014-10-08 3659 * before a channel switch procedure is started (ie. when a STA
9332ef9dbd Masahiro Yamada 2017-02-27 3660 * gets a CSA or a userspace initiated channel-switch), allowing
6d027bcc8a Luciano Coelho 2014-10-08 3661 * the driver to prepare for the channel switch.
f1d65583bc Luciano Coelho 2014-10-08 3662 * @post_channel_switch: This is an optional callback that is called
f1d65583bc Luciano Coelho 2014-10-08 3663 * after a channel switch procedure is completed, allowing the
f1d65583bc Luciano Coelho 2014-10-08 3664 * driver to go back to a normal configuration.
b9cc81d827 Sara Sharon 2019-02-06 3665 * @abort_channel_switch: This is an optional callback that is called
b9cc81d827 Sara Sharon 2019-02-06 3666 * when channel switch procedure was completed, allowing the
b9cc81d827 Sara Sharon 2019-02-06 3667 * driver to go back to a normal configuration.
fafd2bce5a Sara Sharon 2019-02-06 3668 * @channel_switch_rx_beacon: This is an optional callback that is called
fafd2bce5a Sara Sharon 2019-02-06 3669 * when channel switch procedure is in progress and additional beacon with
fafd2bce5a Sara Sharon 2019-02-06 3670 * CSA IE was received, allowing driver to track changes in count.
55fff50113 Johannes Berg 2013-08-19 3671 * @join_ibss: Join an IBSS (on an IBSS interface); this is called after all
55fff50113 Johannes Berg 2013-08-19 3672 * information in bss_conf is set up and the beacon can be retrieved. A
55fff50113 Johannes Berg 2013-08-19 3673 * channel context is bound before this is called.
55fff50113 Johannes Berg 2013-08-19 3674 * @leave_ibss: Leave the IBSS again.
cca674d47e Antonio Quartulli 2014-05-19 3675 *
cca674d47e Antonio Quartulli 2014-05-19 3676 * @get_expected_throughput: extract the expected throughput towards the
cca674d47e Antonio Quartulli 2014-05-19 3677 * specified station. The returned value is expressed in Kbps. It returns 0
cca674d47e Antonio Quartulli 2014-05-19 3678 * if the RC algorithm does not have proper data to provide.
5b3dc42b1b Felix Fietkau 2014-10-26 3679 *
5b3dc42b1b Felix Fietkau 2014-10-26 3680 * @get_txpower: get current maximum tx power (in dBm) based on configuration
5b3dc42b1b Felix Fietkau 2014-10-26 3681 * and hardware limits.
a7a6bdd067 Arik Nemtsov 2014-11-09 3682 *
a7a6bdd067 Arik Nemtsov 2014-11-09 3683 * @tdls_channel_switch: Start channel-switching with a TDLS peer. The driver
a7a6bdd067 Arik Nemtsov 2014-11-09 3684 * is responsible for continually initiating channel-switching operations
a7a6bdd067 Arik Nemtsov 2014-11-09 3685 * and returning to the base channel for communication with the AP. The
a7a6bdd067 Arik Nemtsov 2014-11-09 3686 * driver receives a channel-switch request template and the location of
a7a6bdd067 Arik Nemtsov 2014-11-09 3687 * the switch-timing IE within the template as part of the invocation.
a7a6bdd067 Arik Nemtsov 2014-11-09 3688 * The template is valid only within the call, and the driver can
a7a6bdd067 Arik Nemtsov 2014-11-09 3689 * optionally copy the skb for further re-use.
a7a6bdd067 Arik Nemtsov 2014-11-09 3690 * @tdls_cancel_channel_switch: Stop channel-switching with a TDLS peer. Both
a7a6bdd067 Arik Nemtsov 2014-11-09 3691 * peers must be on the base channel when the call completes.
8a4d32f30d Arik Nemtsov 2014-11-09 3692 * @tdls_recv_channel_switch: a TDLS channel-switch related frame (request or
8a4d32f30d Arik Nemtsov 2014-11-09 3693 * response) has been received from a remote peer. The driver gets
8a4d32f30d Arik Nemtsov 2014-11-09 3694 * parameters parsed from the incoming frame and may use them to continue
8a4d32f30d Arik Nemtsov 2014-11-09 3695 * an ongoing channel-switch operation. In addition, a channel-switch
8a4d32f30d Arik Nemtsov 2014-11-09 3696 * response template is provided, together with the location of the
8a4d32f30d Arik Nemtsov 2014-11-09 3697 * switch-timing IE within the template. The skb can only be used within
8a4d32f30d Arik Nemtsov 2014-11-09 3698 * the function call.
ba8c3d6f16 Felix Fietkau 2015-03-27 3699 *
ba8c3d6f16 Felix Fietkau 2015-03-27 3700 * @wake_tx_queue: Called when new packets have been added to the queue.
f59374eb42 Sara Sharon 2016-03-02 3701 * @sync_rx_queues: Process all pending frames in RSS queues. This is a
f59374eb42 Sara Sharon 2016-03-02 3702 * synchronization which is needed in case driver has in its RSS queues
f59374eb42 Sara Sharon 2016-03-02 3703 * pending frames that were received prior to the control path action
f59374eb42 Sara Sharon 2016-03-02 3704 * currently taken (e.g. disassociation) but are not processed yet.
708d50edb1 Ayala Beker 2016-09-20 3705 *
708d50edb1 Ayala Beker 2016-09-20 3706 * @start_nan: join an existing NAN cluster, or create a new one.
708d50edb1 Ayala Beker 2016-09-20 3707 * @stop_nan: leave the NAN cluster.
5953ff6d6a Ayala Beker 2016-09-20 3708 * @nan_change_conf: change NAN configuration. The data in cfg80211_nan_conf
5953ff6d6a Ayala Beker 2016-09-20 3709 * contains full new configuration and changes specify which parameters
5953ff6d6a Ayala Beker 2016-09-20 3710 * are changed with respect to the last NAN config.
5953ff6d6a Ayala Beker 2016-09-20 3711 * The driver gets both full configuration and the changed parameters since
5953ff6d6a Ayala Beker 2016-09-20 3712 * some devices may need the full configuration while others need only the
5953ff6d6a Ayala Beker 2016-09-20 3713 * changed parameters.
167e33f4f6 Ayala Beker 2016-09-20 3714 * @add_nan_func: Add a NAN function. Returns 0 on success. The data in
167e33f4f6 Ayala Beker 2016-09-20 3715 * cfg80211_nan_func must not be referenced outside the scope of
167e33f4f6 Ayala Beker 2016-09-20 3716 * this call.
167e33f4f6 Ayala Beker 2016-09-20 3717 * @del_nan_func: Remove a NAN function. The driver must call
167e33f4f6 Ayala Beker 2016-09-20 3718 * ieee80211_nan_func_terminated() with
167e33f4f6 Ayala Beker 2016-09-20 3719 * NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST reason code upon removal.
9739fe29a2 Sara Sharon 2018-09-05 3720 * @can_aggregate_in_amsdu: Called in order to determine if HW supports
9739fe29a2 Sara Sharon 2018-09-05 3721 * aggregating two specific frames in the same A-MSDU. The relation
9739fe29a2 Sara Sharon 2018-09-05 3722 * between the skbs should be symmetric and transitive. Note that while
9739fe29a2 Sara Sharon 2018-09-05 3723 * skb is always a real frame, head may or may not be an A-MSDU.
bc847970f4 Pradeep Kumar Chitrapu 2018-10-03 3724 * @get_ftm_responder_stats: Retrieve FTM responder statistics, if available.
bc847970f4 Pradeep Kumar Chitrapu 2018-10-03 3725 * Statistics should be cumulative, currently no way to reset is provided.
cee7013be9 Johannes Berg 2018-10-16 3726 *
cee7013be9 Johannes Berg 2018-10-16 3727 * @start_pmsr: start peer measurement (e.g. FTM) (this call can sleep)
cee7013be9 Johannes Berg 2018-10-16 3728 * @abort_pmsr: abort peer measurement (this call can sleep)
8f20fc2498 Johannes Berg 2007-08-28 3729 */
75a5f0ccfd Johannes Berg 2007-09-18 3730 struct ieee80211_ops {
36323f817a Thomas Huehn 2012-07-23 3731 void (*tx)(struct ieee80211_hw *hw,
36323f817a Thomas Huehn 2012-07-23 3732 struct ieee80211_tx_control *control,
36323f817a Thomas Huehn 2012-07-23 3733 struct sk_buff *skb);
75a5f0ccfd Johannes Berg 2007-09-18 3734 int (*start)(struct ieee80211_hw *hw);
75a5f0ccfd Johannes Berg 2007-09-18 3735 void (*stop)(struct ieee80211_hw *hw);
eecc48000a Johannes Berg 2011-05-04 3736 #ifdef CONFIG_PM
eecc48000a Johannes Berg 2011-05-04 3737 int (*suspend)(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan);
eecc48000a Johannes Berg 2011-05-04 3738 int (*resume)(struct ieee80211_hw *hw);
6d52563f2b Johannes Berg 2012-04-04 3739 void (*set_wakeup)(struct ieee80211_hw *hw, bool enabled);
eecc48000a Johannes Berg 2011-05-04 3740 #endif
75a5f0ccfd Johannes Berg 2007-09-18 3741 int (*add_interface)(struct ieee80211_hw *hw,
1ed32e4fc8 Johannes Berg 2009-12-23 3742 struct ieee80211_vif *vif);
34d4bc4d41 Johannes Berg 2010-08-27 3743 int (*change_interface)(struct ieee80211_hw *hw,
34d4bc4d41 Johannes Berg 2010-08-27 3744 struct ieee80211_vif *vif,
2ca27bcff7 Johannes Berg 2010-09-16 3745 enum nl80211_iftype new_type, bool p2p);
75a5f0ccfd Johannes Berg 2007-09-18 3746 void (*remove_interface)(struct ieee80211_hw *hw,
1ed32e4fc8 Johannes Berg 2009-12-23 3747 struct ieee80211_vif *vif);
e8975581f6 Johannes Berg 2008-10-09 3748 int (*config)(struct ieee80211_hw *hw, u32 changed);
471b3efdfc Johannes Berg 2007-12-28 3749 void (*bss_info_changed)(struct ieee80211_hw *hw,
471b3efdfc Johannes Berg 2007-12-28 3750 struct ieee80211_vif *vif,
471b3efdfc Johannes Berg 2007-12-28 3751 struct ieee80211_bss_conf *info,
471b3efdfc Johannes Berg 2007-12-28 3752 u32 changed);
b2abb6e2bc Johannes Berg 2011-07-19 3753
1041638f2b Johannes Berg 2012-10-19 3754 int (*start_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
1041638f2b Johannes Berg 2012-10-19 3755 void (*stop_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
1041638f2b Johannes Berg 2012-10-19 3756
3ac64beecd Johannes Berg 2009-08-17 3757 u64 (*prepare_multicast)(struct ieee80211_hw *hw,
22bedad3ce Jiri Pirko 2010-04-01 3758 struct netdev_hw_addr_list *mc_list);
75a5f0ccfd Johannes Berg 2007-09-18 3759 void (*configure_filter)(struct ieee80211_hw *hw,
75a5f0ccfd Johannes Berg 2007-09-18 3760 unsigned int changed_flags,
75a5f0ccfd Johannes Berg 2007-09-18 3761 unsigned int *total_flags,
3ac64beecd Johannes Berg 2009-08-17 3762 u64 multicast);
1b09b5568e Andrei Otcheretianski 2015-08-15 3763 void (*config_iface_filter)(struct ieee80211_hw *hw,
1b09b5568e Andrei Otcheretianski 2015-08-15 3764 struct ieee80211_vif *vif,
1b09b5568e Andrei Otcheretianski 2015-08-15 3765 unsigned int filter_flags,
1b09b5568e Andrei Otcheretianski 2015-08-15 3766 unsigned int changed_flags);
17741cdc26 Johannes Berg 2008-09-11 3767 int (*set_tim)(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
17741cdc26 Johannes Berg 2008-09-11 3768 bool set);
ea49c359f3 Johannes Berg 2007-09-18 3769 int (*set_key)(struct ieee80211_hw *hw, enum set_key_cmd cmd,
dc822b5db4 Johannes Berg 2008-12-29 3770 struct ieee80211_vif *vif, struct ieee80211_sta *sta,
11a843b7e1 Johannes Berg 2007-08-28 3771 struct ieee80211_key_conf *key);
9ae4fda332 Emmanuel Grumbach 2008-03-20 3772 void (*update_tkip_key)(struct ieee80211_hw *hw,
b3fbdcf49f Johannes Berg 2010-01-21 3773 struct ieee80211_vif *vif,
b3fbdcf49f Johannes Berg 2010-01-21 3774 struct ieee80211_key_conf *conf,
b3fbdcf49f Johannes Berg 2010-01-21 3775 struct ieee80211_sta *sta,
9ae4fda332 Emmanuel Grumbach 2008-03-20 3776 u32 iv32, u16 *phase1key);
c68f4b892c Johannes Berg 2011-07-05 3777 void (*set_rekey_data)(struct ieee80211_hw *hw,
c68f4b892c Johannes Berg 2011-07-05 3778 struct ieee80211_vif *vif,
c68f4b892c Johannes Berg 2011-07-05 3779 struct cfg80211_gtk_rekey_data *data);
de5fad8157 Yoni Divinsky 2012-05-30 3780 void (*set_default_unicast_key)(struct ieee80211_hw *hw,
de5fad8157 Yoni Divinsky 2012-05-30 3781 struct ieee80211_vif *vif, int idx);
a060bbfe4e Johannes Berg 2010-04-27 3782 int (*hw_scan)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
c56ef67250 David Spinadel 2014-02-05 3783 struct ieee80211_scan_request *req);
b856439b1b Eliad Peller 2011-06-13 3784 void (*cancel_hw_scan)(struct ieee80211_hw *hw,
b856439b1b Eliad Peller 2011-06-13 3785 struct ieee80211_vif *vif);
79f460ca49 Luciano Coelho 2011-05-11 3786 int (*sched_scan_start)(struct ieee80211_hw *hw,
79f460ca49 Luciano Coelho 2011-05-11 3787 struct ieee80211_vif *vif,
79f460ca49 Luciano Coelho 2011-05-11 3788 struct cfg80211_sched_scan_request *req,
633e271326 David Spinadel 2014-02-06 3789 struct ieee80211_scan_ies *ies);
37e3308cb2 Johannes Berg 2014-02-17 3790 int (*sched_scan_stop)(struct ieee80211_hw *hw,
79f460ca49 Luciano Coelho 2011-05-11 3791 struct ieee80211_vif *vif);
a344d6778a Johannes Berg 2014-06-12 3792 void (*sw_scan_start)(struct ieee80211_hw *hw,
a344d6778a Johannes Berg 2014-06-12 3793 struct ieee80211_vif *vif,
a344d6778a Johannes Berg 2014-06-12 3794 const u8 *mac_addr);
a344d6778a Johannes Berg 2014-06-12 3795 void (*sw_scan_complete)(struct ieee80211_hw *hw,
a344d6778a Johannes Berg 2014-06-12 3796 struct ieee80211_vif *vif);
f0706e828e Jiri Benc 2007-05-05 3797 int (*get_stats)(struct ieee80211_hw *hw,
f0706e828e Jiri Benc 2007-05-05 3798 struct ieee80211_low_level_stats *stats);
9352c19f63 Johannes Berg 2015-04-20 3799 void (*get_key_seq)(struct ieee80211_hw *hw,
9352c19f63 Johannes Berg 2015-04-20 3800 struct ieee80211_key_conf *key,
9352c19f63 Johannes Berg 2015-04-20 3801 struct ieee80211_key_seq *seq);
f23a478075 Arik Nemtsov 2010-11-08 3802 int (*set_frag_threshold)(struct ieee80211_hw *hw, u32 value);
f0706e828e Jiri Benc 2007-05-05 3803 int (*set_rts_threshold)(struct ieee80211_hw *hw, u32 value);
34e895075e Johannes Berg 2010-02-03 3804 int (*sta_add)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
34e895075e Johannes Berg 2010-02-03 3805 struct ieee80211_sta *sta);
34e895075e Johannes Berg 2010-02-03 3806 int (*sta_remove)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
34e895075e Johannes Berg 2010-02-03 3807 struct ieee80211_sta *sta);
77d2ece6fd Sujith Manoharan 2012-11-20 3808 #ifdef CONFIG_MAC80211_DEBUGFS
77d2ece6fd Sujith Manoharan 2012-11-20 3809 void (*sta_add_debugfs)(struct ieee80211_hw *hw,
77d2ece6fd Sujith Manoharan 2012-11-20 3810 struct ieee80211_vif *vif,
77d2ece6fd Sujith Manoharan 2012-11-20 3811 struct ieee80211_sta *sta,
77d2ece6fd Sujith Manoharan 2012-11-20 3812 struct dentry *dir);
77d2ece6fd Sujith Manoharan 2012-11-20 3813 #endif
32bfd35d4b Johannes Berg 2007-12-19 3814 void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
17741cdc26 Johannes Berg 2008-09-11 3815 enum sta_notify_cmd, struct ieee80211_sta *sta);
f6a144eae3 Ashok Raj Nagarajan 2019-03-29 3816 int (*sta_set_txpwr)(struct ieee80211_hw *hw,
f6a144eae3 Ashok Raj Nagarajan 2019-03-29 3817 struct ieee80211_vif *vif,
f6a144eae3 Ashok Raj Nagarajan 2019-03-29 3818 struct ieee80211_sta *sta);
f09603a259 Johannes Berg 2012-01-20 3819 int (*sta_state)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
f09603a259 Johannes Berg 2012-01-20 3820 struct ieee80211_sta *sta,
f09603a259 Johannes Berg 2012-01-20 3821 enum ieee80211_sta_state old_state,
f09603a259 Johannes Berg 2012-01-20 3822 enum ieee80211_sta_state new_state);
6a9d1b91f3 Johannes Berg 2013-12-04 3823 void (*sta_pre_rcu_remove)(struct ieee80211_hw *hw,
6a9d1b91f3 Johannes Berg 2013-12-04 3824 struct ieee80211_vif *vif,
6a9d1b91f3 Johannes Berg 2013-12-04 3825 struct ieee80211_sta *sta);
8f727ef3c4 Johannes Berg 2012-03-30 3826 void (*sta_rc_update)(struct ieee80211_hw *hw,
8f727ef3c4 Johannes Berg 2012-03-30 3827 struct ieee80211_vif *vif,
8f727ef3c4 Johannes Berg 2012-03-30 3828 struct ieee80211_sta *sta,
8f727ef3c4 Johannes Berg 2012-03-30 3829 u32 changed);
f815e2b3c0 Johannes Berg 2014-11-19 3830 void (*sta_rate_tbl_update)(struct ieee80211_hw *hw,
f815e2b3c0 Johannes Berg 2014-11-19 3831 struct ieee80211_vif *vif,
f815e2b3c0 Johannes Berg 2014-11-19 3832 struct ieee80211_sta *sta);
2b9a7e1bac Johannes Berg 2014-11-17 3833 void (*sta_statistics)(struct ieee80211_hw *hw,
2b9a7e1bac Johannes Berg 2014-11-17 3834 struct ieee80211_vif *vif,
2b9a7e1bac Johannes Berg 2014-11-17 3835 struct ieee80211_sta *sta,
2b9a7e1bac Johannes Berg 2014-11-17 3836 struct station_info *sinfo);
8a3a3c85e4 Eliad Peller 2011-10-02 3837 int (*conf_tx)(struct ieee80211_hw *hw,
a3304b0a17 Johannes Berg 2012-03-28 3838 struct ieee80211_vif *vif, u16 ac,
f0706e828e Jiri Benc 2007-05-05 3839 const struct ieee80211_tx_queue_params *params);
37a41b4aff Eliad Peller 2011-09-21 3840 u64 (*get_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
37a41b4aff Eliad Peller 2011-09-21 3841 void (*set_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
37a41b4aff Eliad Peller 2011-09-21 3842 u64 tsf);
354d381baf Pedersen, Thomas 2016-09-28 3843 void (*offset_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
354d381baf Pedersen, Thomas 2016-09-28 3844 s64 offset);
37a41b4aff Eliad Peller 2011-09-21 3845 void (*reset_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
f0706e828e Jiri Benc 2007-05-05 3846 int (*tx_last_beacon)(struct ieee80211_hw *hw);
57eeb2086d Johannes Berg 2017-01-13 3847
57eeb2086d Johannes Berg 2017-01-13 3848 /**
57eeb2086d Johannes Berg 2017-01-13 3849 * @ampdu_action:
57eeb2086d Johannes Berg 2017-01-13 3850 * Perform a certain A-MPDU action.
57eeb2086d Johannes Berg 2017-01-13 3851 * The RA/TID combination determines the destination and TID we want
57eeb2086d Johannes Berg 2017-01-13 3852 * the ampdu action to be performed for. The action is defined through
57eeb2086d Johannes Berg 2017-01-13 3853 * ieee80211_ampdu_mlme_action.
57eeb2086d Johannes Berg 2017-01-13 3854 * When the action is set to %IEEE80211_AMPDU_TX_OPERATIONAL the driver
57eeb2086d Johannes Berg 2017-01-13 3855 * may neither send aggregates containing more subframes than @buf_size
57eeb2086d Johannes Berg 2017-01-13 3856 * nor send aggregates in a way that lost frames would exceed the
57eeb2086d Johannes Berg 2017-01-13 3857 * buffer size. If just limiting the aggregate size, this would be
57eeb2086d Johannes Berg 2017-01-13 3858 * possible with a buf_size of 8:
57eeb2086d Johannes Berg 2017-01-13 3859 *
57eeb2086d Johannes Berg 2017-01-13 3860 * - ``TX: 1.....7``
57eeb2086d Johannes Berg 2017-01-13 3861 * - ``RX: 2....7`` (lost frame #1)
57eeb2086d Johannes Berg 2017-01-13 3862 * - ``TX: 8..1...``
57eeb2086d Johannes Berg 2017-01-13 3863 *
57eeb2086d Johannes Berg 2017-01-13 3864 * which is invalid since #1 was now re-transmitted well past the
57eeb2086d Johannes Berg 2017-01-13 3865 * buffer size of 8. Correct ways to retransmit #1 would be:
57eeb2086d Johannes Berg 2017-01-13 3866 *
57eeb2086d Johannes Berg 2017-01-13 3867 * - ``TX: 1 or``
57eeb2086d Johannes Berg 2017-01-13 3868 * - ``TX: 18 or``
57eeb2086d Johannes Berg 2017-01-13 3869 * - ``TX: 81``
57eeb2086d Johannes Berg 2017-01-13 3870 *
57eeb2086d Johannes Berg 2017-01-13 3871 * Even ``189`` would be wrong since 1 could be lost again.
57eeb2086d Johannes Berg 2017-01-13 3872 *
57eeb2086d Johannes Berg 2017-01-13 3873 * Returns a negative error code on failure.
57eeb2086d Johannes Berg 2017-01-13 3874 * The callback can sleep.
57eeb2086d Johannes Berg 2017-01-13 3875 */
1b7d03acbf Ron Rindjunsky 2007-12-25 3876 int (*ampdu_action)(struct ieee80211_hw *hw,
c951ad3550 Johannes Berg 2009-11-16 3877 struct ieee80211_vif *vif,
50ea05efaf Sara Sharon 2015-12-30 3878 struct ieee80211_ampdu_params *params);
1289723ef2 Holger Schurig 2010-04-19 3879 int (*get_survey)(struct ieee80211_hw *hw, int idx,
1289723ef2 Holger Schurig 2010-04-19 3880 struct survey_info *survey);
1f87f7d3a3 Johannes Berg 2009-06-02 3881 void (*rfkill_poll)(struct ieee80211_hw *hw);
a4bcaf5556 Lorenzo Bianconi 2014-09-04 3882 void (*set_coverage_class)(struct ieee80211_hw *hw, s16 coverage_class);
aff89a9b90 Johannes Berg 2009-07-01 3883 #ifdef CONFIG_NL80211_TESTMODE
52981cd794 David Spinadel 2013-07-31 3884 int (*testmode_cmd)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
52981cd794 David Spinadel 2013-07-31 3885 void *data, int len);
71063f0e89 Wey-Yi Guy 2011-05-20 3886 int (*testmode_dump)(struct ieee80211_hw *hw, struct sk_buff *skb,
71063f0e89 Wey-Yi Guy 2011-05-20 3887 struct netlink_callback *cb,
71063f0e89 Wey-Yi Guy 2011-05-20 3888 void *data, int len);
aff89a9b90 Johannes Berg 2009-07-01 3889 #endif
77be2c54c5 Emmanuel Grumbach 2014-03-27 3890 void (*flush)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
77be2c54c5 Emmanuel Grumbach 2014-03-27 3891 u32 queues, bool drop);
5ce6e438d5 Johannes Berg 2010-05-11 3892 void (*channel_switch)(struct ieee80211_hw *hw,
0f791eb47f Luciano Coelho 2014-10-08 3893 struct ieee80211_vif *vif,
5ce6e438d5 Johannes Berg 2010-05-11 3894 struct ieee80211_channel_switch *ch_switch);
15d9675321 Bruno Randolf 2010-11-10 3895 int (*set_antenna)(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant);
15d9675321 Bruno Randolf 2010-11-10 3896 int (*get_antenna)(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant);
21f8358964 Johannes Berg 2010-12-18 3897
21f8358964 Johannes Berg 2010-12-18 3898 int (*remain_on_channel)(struct ieee80211_hw *hw,
4988456862 Eliad Peller 2012-11-19 3899 struct ieee80211_vif *vif,
21f8358964 Johannes Berg 2010-12-18 3900 struct ieee80211_channel *chan,
d339d5ca8e Ilan Peer 2013-02-12 3901 int duration,
d339d5ca8e Ilan Peer 2013-02-12 3902 enum ieee80211_roc_type type);
21f8358964 Johannes Berg 2010-12-18 3903 int (*cancel_remain_on_channel)(struct ieee80211_hw *hw);
38c091590f John W. Linville 2011-03-07 3904 int (*set_ringparam)(struct ieee80211_hw *hw, u32 tx, u32 rx);
38c091590f John W. Linville 2011-03-07 3905 void (*get_ringparam)(struct ieee80211_hw *hw,
38c091590f John W. Linville 2011-03-07 3906 u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max);
e8306f9894 Vivek Natarajan 2011-04-06 3907 bool (*tx_frames_pending)(struct ieee80211_hw *hw);
bdbfd6b582 Sujith Manoharan 2011-04-27 3908 int (*set_bitrate_mask)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
bdbfd6b582 Sujith Manoharan 2011-04-27 3909 const struct cfg80211_bitrate_mask *mask);
a818292952 Emmanuel Grumbach 2015-03-16 3910 void (*event_callback)(struct ieee80211_hw *hw,
887da9176e Emmanuel Grumbach 2013-01-20 3911 struct ieee80211_vif *vif,
a818292952 Emmanuel Grumbach 2015-03-16 3912 const struct ieee80211_event *event);
4049e09acd Johannes Berg 2011-09-29 3913
40b9640883 Johannes Berg 2011-09-29 3914 void (*allow_buffered_frames)(struct ieee80211_hw *hw,
40b9640883 Johannes Berg 2011-09-29 3915 struct ieee80211_sta *sta,
40b9640883 Johannes Berg 2011-09-29 3916 u16 tids, int num_frames,
40b9640883 Johannes Berg 2011-09-29 3917 enum ieee80211_frame_release_type reason,
40b9640883 Johannes Berg 2011-09-29 3918 bool more_data);
4049e09acd Johannes Berg 2011-09-29 3919 void (*release_buffered_frames)(struct ieee80211_hw *hw,
4049e09acd Johannes Berg 2011-09-29 3920 struct ieee80211_sta *sta,
4049e09acd Johannes Berg 2011-09-29 3921 u16 tids, int num_frames,
4049e09acd Johannes Berg 2011-09-29 3922 enum ieee80211_frame_release_type reason,
4049e09acd Johannes Berg 2011-09-29 3923 bool more_data);
e352114fd6 Ben Greear 2012-04-23 3924
e352114fd6 Ben Greear 2012-04-23 3925 int (*get_et_sset_count)(struct ieee80211_hw *hw,
e352114fd6 Ben Greear 2012-04-23 3926 struct ieee80211_vif *vif, int sset);
e352114fd6 Ben Greear 2012-04-23 3927 void (*get_et_stats)(struct ieee80211_hw *hw,
e352114fd6 Ben Greear 2012-04-23 3928 struct ieee80211_vif *vif,
e352114fd6 Ben Greear 2012-04-23 3929 struct ethtool_stats *stats, u64 *data);
e352114fd6 Ben Greear 2012-04-23 3930 void (*get_et_strings)(struct ieee80211_hw *hw,
e352114fd6 Ben Greear 2012-04-23 3931 struct ieee80211_vif *vif,
e352114fd6 Ben Greear 2012-04-23 3932 u32 sset, u8 *data);
a1845fc7c5 Johannes Berg 2012-06-27 3933
a1845fc7c5 Johannes Berg 2012-06-27 3934 void (*mgd_prepare_tx)(struct ieee80211_hw *hw,
d4e36e5554 Ilan Peer 2018-04-20 3935 struct ieee80211_vif *vif,
d4e36e5554 Ilan Peer 2018-04-20 3936 u16 duration);
c3645eac47 Michal Kazior 2012-06-26 3937
ee10f2c779 Arik Nemtsov 2014-06-11 3938 void (*mgd_protect_tdls_discover)(struct ieee80211_hw *hw,
ee10f2c779 Arik Nemtsov 2014-06-11 3939 struct ieee80211_vif *vif);
ee10f2c779 Arik Nemtsov 2014-06-11 3940
c3645eac47 Michal Kazior 2012-06-26 3941 int (*add_chanctx)(struct ieee80211_hw *hw,
c3645eac47 Michal Kazior 2012-06-26 3942 struct ieee80211_chanctx_conf *ctx);
c3645eac47 Michal Kazior 2012-06-26 3943 void (*remove_chanctx)(struct ieee80211_hw *hw,
c3645eac47 Michal Kazior 2012-06-26 3944 struct ieee80211_chanctx_conf *ctx);
c3645eac47 Michal Kazior 2012-06-26 3945 void (*change_chanctx)(struct ieee80211_hw *hw,
c3645eac47 Michal Kazior 2012-06-26 3946 struct ieee80211_chanctx_conf *ctx,
c3645eac47 Michal Kazior 2012-06-26 3947 u32 changed);
c3645eac47 Michal Kazior 2012-06-26 3948 int (*assign_vif_chanctx)(struct ieee80211_hw *hw,
c3645eac47 Michal Kazior 2012-06-26 3949 struct ieee80211_vif *vif,
c3645eac47 Michal Kazior 2012-06-26 3950 struct ieee80211_chanctx_conf *ctx);
c3645eac47 Michal Kazior 2012-06-26 3951 void (*unassign_vif_chanctx)(struct ieee80211_hw *hw,
c3645eac47 Michal Kazior 2012-06-26 3952 struct ieee80211_vif *vif,
c3645eac47 Michal Kazior 2012-06-26 3953 struct ieee80211_chanctx_conf *ctx);
1a5f0c13d1 Luciano Coelho 2014-05-23 3954 int (*switch_vif_chanctx)(struct ieee80211_hw *hw,
1a5f0c13d1 Luciano Coelho 2014-05-23 3955 struct ieee80211_vif_chanctx_switch *vifs,
1a5f0c13d1 Luciano Coelho 2014-05-23 3956 int n_vifs,
1a5f0c13d1 Luciano Coelho 2014-05-23 3957 enum ieee80211_chanctx_switch_mode mode);
9214ad7f9a Johannes Berg 2012-11-06 3958
cf2c92d840 Eliad Peller 2014-11-04 3959 void (*reconfig_complete)(struct ieee80211_hw *hw,
cf2c92d840 Eliad Peller 2014-11-04 3960 enum ieee80211_reconfig_type reconfig_type);
a65240c101 Johannes Berg 2013-01-14 3961
a65240c101 Johannes Berg 2013-01-14 3962 #if IS_ENABLED(CONFIG_IPV6)
a65240c101 Johannes Berg 2013-01-14 3963 void (*ipv6_addr_change)(struct ieee80211_hw *hw,
a65240c101 Johannes Berg 2013-01-14 3964 struct ieee80211_vif *vif,
a65240c101 Johannes Berg 2013-01-14 3965 struct inet6_dev *idev);
a65240c101 Johannes Berg 2013-01-14 3966 #endif
73da7d5bab Simon Wunderlich 2013-07-11 3967 void (*channel_switch_beacon)(struct ieee80211_hw *hw,
73da7d5bab Simon Wunderlich 2013-07-11 3968 struct ieee80211_vif *vif,
73da7d5bab Simon Wunderlich 2013-07-11 3969 struct cfg80211_chan_def *chandef);
6d027bcc8a Luciano Coelho 2014-10-08 3970 int (*pre_channel_switch)(struct ieee80211_hw *hw,
6d027bcc8a Luciano Coelho 2014-10-08 3971 struct ieee80211_vif *vif,
6d027bcc8a Luciano Coelho 2014-10-08 3972 struct ieee80211_channel_switch *ch_switch);
55fff50113 Johannes Berg 2013-08-19 3973
f1d65583bc Luciano Coelho 2014-10-08 3974 int (*post_channel_switch)(struct ieee80211_hw *hw,
f1d65583bc Luciano Coelho 2014-10-08 3975 struct ieee80211_vif *vif);
b9cc81d827 Sara Sharon 2019-02-06 3976 void (*abort_channel_switch)(struct ieee80211_hw *hw,
b9cc81d827 Sara Sharon 2019-02-06 3977 struct ieee80211_vif *vif);
fafd2bce5a Sara Sharon 2019-02-06 3978 void (*channel_switch_rx_beacon)(struct ieee80211_hw *hw,
fafd2bce5a Sara Sharon 2019-02-06 3979 struct ieee80211_vif *vif,
fafd2bce5a Sara Sharon 2019-02-06 3980 struct ieee80211_channel_switch *ch_switch);
f1d65583bc Luciano Coelho 2014-10-08 3981
55fff50113 Johannes Berg 2013-08-19 3982 int (*join_ibss)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
55fff50113 Johannes Berg 2013-08-19 3983 void (*leave_ibss)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
2439ca0402 Maxim Altshul 2016-08-04 3984 u32 (*get_expected_throughput)(struct ieee80211_hw *hw,
2439ca0402 Maxim Altshul 2016-08-04 3985 struct ieee80211_sta *sta);
5b3dc42b1b Felix Fietkau 2014-10-26 3986 int (*get_txpower)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
5b3dc42b1b Felix Fietkau 2014-10-26 3987 int *dbm);
a7a6bdd067 Arik Nemtsov 2014-11-09 3988
a7a6bdd067 Arik Nemtsov 2014-11-09 3989 int (*tdls_channel_switch)(struct ieee80211_hw *hw,
a7a6bdd067 Arik Nemtsov 2014-11-09 3990 struct ieee80211_vif *vif,
a7a6bdd067 Arik Nemtsov 2014-11-09 3991 struct ieee80211_sta *sta, u8 oper_class,
a7a6bdd067 Arik Nemtsov 2014-11-09 3992 struct cfg80211_chan_def *chandef,
8a4d32f30d Arik Nemtsov 2014-11-09 3993 struct sk_buff *tmpl_skb, u32 ch_sw_tm_ie);
a7a6bdd067 Arik Nemtsov 2014-11-09 3994 void (*tdls_cancel_channel_switch)(struct ieee80211_hw *hw,
a7a6bdd067 Arik Nemtsov 2014-11-09 3995 struct ieee80211_vif *vif,
a7a6bdd067 Arik Nemtsov 2014-11-09 3996 struct ieee80211_sta *sta);
8a4d32f30d Arik Nemtsov 2014-11-09 3997 void (*tdls_recv_channel_switch)(struct ieee80211_hw *hw,
8a4d32f30d Arik Nemtsov 2014-11-09 3998 struct ieee80211_vif *vif,
8a4d32f30d Arik Nemtsov 2014-11-09 3999 struct ieee80211_tdls_ch_sw_params *params);
ba8c3d6f16 Felix Fietkau 2015-03-27 4000
e7881bd594 Johannes Berg 2017-12-19 4001 void (*wake_tx_queue)(struct ieee80211_hw *hw,
e7881bd594 Johannes Berg 2017-12-19 4002 struct ieee80211_txq *txq);
f59374eb42 Sara Sharon 2016-03-02 4003 void (*sync_rx_queues)(struct ieee80211_hw *hw);
708d50edb1 Ayala Beker 2016-09-20 4004
708d50edb1 Ayala Beker 2016-09-20 4005 int (*start_nan)(struct ieee80211_hw *hw,
708d50edb1 Ayala Beker 2016-09-20 4006 struct ieee80211_vif *vif,
708d50edb1 Ayala Beker 2016-09-20 4007 struct cfg80211_nan_conf *conf);
708d50edb1 Ayala Beker 2016-09-20 4008 int (*stop_nan)(struct ieee80211_hw *hw,
708d50edb1 Ayala Beker 2016-09-20 4009 struct ieee80211_vif *vif);
5953ff6d6a Ayala Beker 2016-09-20 4010 int (*nan_change_conf)(struct ieee80211_hw *hw,
5953ff6d6a Ayala Beker 2016-09-20 4011 struct ieee80211_vif *vif,
5953ff6d6a Ayala Beker 2016-09-20 4012 struct cfg80211_nan_conf *conf, u32 changes);
167e33f4f6 Ayala Beker 2016-09-20 4013 int (*add_nan_func)(struct ieee80211_hw *hw,
167e33f4f6 Ayala Beker 2016-09-20 4014 struct ieee80211_vif *vif,
167e33f4f6 Ayala Beker 2016-09-20 4015 const struct cfg80211_nan_func *nan_func);
167e33f4f6 Ayala Beker 2016-09-20 4016 void (*del_nan_func)(struct ieee80211_hw *hw,
167e33f4f6 Ayala Beker 2016-09-20 4017 struct ieee80211_vif *vif,
167e33f4f6 Ayala Beker 2016-09-20 4018 u8 instance_id);
9739fe29a2 Sara Sharon 2018-09-05 4019 bool (*can_aggregate_in_amsdu)(struct ieee80211_hw *hw,
9739fe29a2 Sara Sharon 2018-09-05 4020 struct sk_buff *head,
9739fe29a2 Sara Sharon 2018-09-05 4021 struct sk_buff *skb);
bc847970f4 Pradeep Kumar Chitrapu 2018-10-03 4022 int (*get_ftm_responder_stats)(struct ieee80211_hw *hw,
bc847970f4 Pradeep Kumar Chitrapu 2018-10-03 4023 struct ieee80211_vif *vif,
bc847970f4 Pradeep Kumar Chitrapu 2018-10-03 4024 struct cfg80211_ftm_responder_stats *ftm_stats);
cee7013be9 Johannes Berg 2018-10-16 4025 int (*start_pmsr)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
cee7013be9 Johannes Berg 2018-10-16 4026 struct cfg80211_pmsr_request *request);
cee7013be9 Johannes Berg 2018-10-16 4027 void (*abort_pmsr)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
cee7013be9 Johannes Berg 2018-10-16 4028 struct cfg80211_pmsr_request *request);
f0706e828e Jiri Benc 2007-05-05 @4029 };
f0706e828e Jiri Benc 2007-05-05 4030
:::::: The code at line 4029 was first introduced by commit
:::::: f0706e828e96d0fa4e80c0d25aa98523f6d589a0 [MAC80211]: Add mac80211 wireless stack.
:::::: TO: Jiri Benc <jbenc@suse.cz>
:::::: CC: David S. Miller <davem@davemloft.net>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 6589 bytes --]
[-- Attachment #3: Type: text/plain, Size: 146 bytes --]
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k
WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: Balaji Pothunoori <bpothuno@codeaurora.org>
Cc: kbuild-all@01.org, johannes@sipsolutions.net,
ath10k@lists.infradead.org, linux-wireless@vger.kernel.org,
Ashok Raj Nagarajan <arnagara@codeaurora.org>,
Balaji Pothunoori <bpothuno@codeaurora.org>
Subject: Re: [PATCH v4 2/3] mac80211: store tx power value from user to station
Date: Sun, 31 Mar 2019 15:22:10 +0800 [thread overview]
Message-ID: <201903311552.TtxO16s6%lkp@intel.com> (raw)
In-Reply-To: <1553856549-21552-1-git-send-email-bpothuno@codeaurora.org>
[-- Attachment #1: Type: text/plain, Size: 98640 bytes --]
Hi Balaji,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on mac80211-next/master]
[also build test WARNING on v5.1-rc2 next-20190329]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Balaji-Pothunoori/cfg80211-Add-support-to-set-tx-power-for-a-station-associated/20190331-104601
base: https://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git master
reproduce: make htmldocs
All warnings (new ones prefixed by >>):
WARNING: convert(1) not found, for SVG to PDF conversion install ImageMagick (https://www.imagemagick.org)
include/linux/rcupdate_wait.h:1: warning: no structured comments found
include/linux/rcutree.h:1: warning: no structured comments found
kernel/rcu/tree.c:710: warning: Excess function parameter 'irq' description in 'rcu_nmi_exit'
include/linux/gfp.h:1: warning: no structured comments found
include/net/cfg80211.h:1072: warning: Function parameter or member 'txpwr' not described in 'station_parameters'
>> include/net/mac80211.h:4029: warning: Function parameter or member 'sta_set_txpwr' not described in 'ieee80211_ops'
>> include/net/mac80211.h:2000: warning: Function parameter or member 'txpwr' not described in 'ieee80211_sta'
kernel/rcu/tree.c:711: warning: Excess function parameter 'irq' description in 'rcu_nmi_exit'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_excl.cb' not described in 'dma_buf'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_excl.poll' not described in 'dma_buf'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_excl.active' not described in 'dma_buf'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_shared.cb' not described in 'dma_buf'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_shared.poll' not described in 'dma_buf'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_shared.active' not described in 'dma_buf'
include/linux/dma-fence-array.h:54: warning: Function parameter or member 'work' not described in 'dma_fence_array'
include/linux/firmware/intel/stratix10-svc-client.h:1: warning: no structured comments found
include/linux/gpio/driver.h:371: warning: Function parameter or member 'init_valid_mask' not described in 'gpio_chip'
include/linux/iio/hw-consumer.h:1: warning: no structured comments found
include/linux/input/sparse-keymap.h:46: warning: Function parameter or member 'sw' not described in 'key_entry'
include/linux/regulator/machine.h:199: warning: Function parameter or member 'max_uV_step' not described in 'regulation_constraints'
include/linux/regulator/driver.h:228: warning: Function parameter or member 'resume' not described in 'regulator_ops'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw0' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw1' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw2' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw3' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.eadm' not described in 'irb'
drivers/slimbus/stream.c:1: warning: no structured comments found
include/linux/spi/spi.h:180: warning: Function parameter or member 'driver_override' not described in 'spi_device'
drivers/target/target_core_device.c:1: warning: no structured comments found
drivers/usb/typec/bus.c:1: warning: no structured comments found
drivers/usb/typec/class.c:1: warning: no structured comments found
include/linux/w1.h:281: warning: Function parameter or member 'of_match_table' not described in 'w1_family'
fs/direct-io.c:257: warning: Excess function parameter 'offset' description in 'dio_complete'
fs/file_table.c:1: warning: no structured comments found
fs/libfs.c:477: warning: Excess function parameter 'available' description in 'simple_write_end'
fs/posix_acl.c:646: warning: Function parameter or member 'inode' not described in 'posix_acl_update_mode'
fs/posix_acl.c:646: warning: Function parameter or member 'mode_p' not described in 'posix_acl_update_mode'
fs/posix_acl.c:646: warning: Function parameter or member 'acl' not described in 'posix_acl_update_mode'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:294: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:294: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:294: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:343: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:343: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:343: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:183: warning: Function parameter or member 'blockable' not described in 'amdgpu_mn_read_lock'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Function parameter or member 'range' not described in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Function parameter or member 'range' not described in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:382: warning: cannot understand function prototype: 'struct amdgpu_vm_pt_cursor '
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:383: warning: cannot understand function prototype: 'struct amdgpu_vm_pt_cursor '
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:555: warning: Function parameter or member 'adev' not described in 'for_each_amdgpu_vm_pt_leaf'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:555: warning: Function parameter or member 'vm' not described in 'for_each_amdgpu_vm_pt_leaf'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:555: warning: Function parameter or member 'start' not described in 'for_each_amdgpu_vm_pt_leaf'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:555: warning: Function parameter or member 'end' not described in 'for_each_amdgpu_vm_pt_leaf'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:555: warning: Function parameter or member 'cursor' not described in 'for_each_amdgpu_vm_pt_leaf'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:603: warning: Function parameter or member 'adev' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:603: warning: Function parameter or member 'vm' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:603: warning: Function parameter or member 'cursor' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:603: warning: Function parameter or member 'entry' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:847: warning: Function parameter or member 'level' not described in 'amdgpu_vm_bo_param'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1352: warning: Function parameter or member 'params' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1352: warning: Function parameter or member 'bo' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1352: warning: Function parameter or member 'pe' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1352: warning: Function parameter or member 'addr' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1352: warning: Function parameter or member 'count' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1352: warning: Function parameter or member 'incr' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1352: warning: Function parameter or member 'flags' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'params' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'bo' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'level' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'pe' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'addr' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'count' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'incr' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1519: warning: Function parameter or member 'flags' not described in 'amdgpu_vm_update_huge'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:3095: warning: Function parameter or member 'pasid' not described in 'amdgpu_vm_make_compute'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:128: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source @atomic_obj
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'atomic_obj' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'atomic_obj_lock' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'backlight_link' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'backlight_caps' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'freesync_module' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'fw_dmcu' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'dmcu_fw_version' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c:1: warning: no structured comments found
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_pin' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_unpin' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_res_obj' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_get_sg_table' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_import_sg_table' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_vmap' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_vunmap' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_mmap' not described in 'drm_driver'
include/drm/drm_atomic_state_helper.h:1: warning: no structured comments found
drivers/gpu/drm/drm_dp_helper.c:1364: warning: Function parameter or member 'dsc_dpcd' not described in 'drm_dp_dsc_sink_max_slice_count'
drivers/gpu/drm/drm_dp_helper.c:1364: warning: Function parameter or member 'is_edp' not described in 'drm_dp_dsc_sink_max_slice_count'
drivers/gpu/drm/i915/i915_vma.h:49: warning: cannot understand function prototype: 'struct i915_vma '
drivers/gpu/drm/i915/i915_vma.h:1: warning: no structured comments found
drivers/gpu/drm/i915/intel_guc_fwif.h:536: warning: cannot understand function prototype: 'struct guc_log_buffer_state '
drivers/gpu/drm/i915/i915_trace.h:1: warning: no structured comments found
include/linux/skbuff.h:876: warning: Function parameter or member 'dev_scratch' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'list' not described in 'sk_buff'
vim +4029 include/net/mac80211.h
cf2c92d840 Eliad Peller 2014-11-04 3188
cf2c92d840 Eliad Peller 2014-11-04 3189 /**
75a5f0ccfd Johannes Berg 2007-09-18 3190 * struct ieee80211_ops - callbacks from mac80211 to the driver
75a5f0ccfd Johannes Berg 2007-09-18 3191 *
75a5f0ccfd Johannes Berg 2007-09-18 3192 * This structure contains various callbacks that the driver may
75a5f0ccfd Johannes Berg 2007-09-18 3193 * handle or, in some cases, must handle, for example to configure
75a5f0ccfd Johannes Berg 2007-09-18 3194 * the hardware to a new channel or to transmit a frame.
75a5f0ccfd Johannes Berg 2007-09-18 3195 *
75a5f0ccfd Johannes Berg 2007-09-18 3196 * @tx: Handler that 802.11 module calls for each transmitted frame.
f0706e828e Jiri Benc 2007-05-05 3197 * skb contains the buffer starting from the IEEE 802.11 header.
f0706e828e Jiri Benc 2007-05-05 3198 * The low-level driver should send the frame out based on
eefce91a38 Johannes Berg 2008-05-17 3199 * configuration in the TX control data. This handler should,
11127e9121 Johannes Berg 2011-11-16 3200 * preferably, never fail and stop queues appropriately.
11127e9121 Johannes Berg 2011-11-16 3201 * Must be atomic.
75a5f0ccfd Johannes Berg 2007-09-18 3202 *
75a5f0ccfd Johannes Berg 2007-09-18 3203 * @start: Called before the first netdevice attached to the hardware
4150c57212 Johannes Berg 2007-09-17 3204 * is enabled. This should turn on the hardware and must turn on
4150c57212 Johannes Berg 2007-09-17 3205 * frame reception (for possibly enabled monitor interfaces.)
4150c57212 Johannes Berg 2007-09-17 3206 * Returns negative error codes, these may be seen in userspace,
4150c57212 Johannes Berg 2007-09-17 3207 * or zero.
4150c57212 Johannes Berg 2007-09-17 3208 * When the device is started it should not have a MAC address
4150c57212 Johannes Berg 2007-09-17 3209 * to avoid acknowledging frames before a non-monitor device
4150c57212 Johannes Berg 2007-09-17 3210 * is added.
e1781ed33a Kalle Valo 2009-12-23 3211 * Must be implemented and can sleep.
75a5f0ccfd Johannes Berg 2007-09-18 3212 *
75a5f0ccfd Johannes Berg 2007-09-18 3213 * @stop: Called after last netdevice attached to the hardware
4150c57212 Johannes Berg 2007-09-17 3214 * is disabled. This should turn off the hardware (at least
4150c57212 Johannes Berg 2007-09-17 3215 * it must turn off frame reception.)
4150c57212 Johannes Berg 2007-09-17 3216 * May be called right after add_interface if that rejects
42935ecaf4 Luis R. Rodriguez 2009-07-29 3217 * an interface. If you added any work onto the mac80211 workqueue
42935ecaf4 Luis R. Rodriguez 2009-07-29 3218 * you should ensure to cancel it on this callback.
e1781ed33a Kalle Valo 2009-12-23 3219 * Must be implemented and can sleep.
75a5f0ccfd Johannes Berg 2007-09-18 3220 *
eecc48000a Johannes Berg 2011-05-04 3221 * @suspend: Suspend the device; mac80211 itself will quiesce before and
eecc48000a Johannes Berg 2011-05-04 3222 * stop transmitting and doing any other configuration, and then
eecc48000a Johannes Berg 2011-05-04 3223 * ask the device to suspend. This is only invoked when WoWLAN is
eecc48000a Johannes Berg 2011-05-04 3224 * configured, otherwise the device is deconfigured completely and
eecc48000a Johannes Berg 2011-05-04 3225 * reconfigured at resume time.
2b4562dfd6 Johannes Berg 2011-07-02 3226 * The driver may also impose special conditions under which it
2b4562dfd6 Johannes Berg 2011-07-02 3227 * wants to use the "normal" suspend (deconfigure), say if it only
2b4562dfd6 Johannes Berg 2011-07-02 3228 * supports WoWLAN when the device is associated. In this case, it
2b4562dfd6 Johannes Berg 2011-07-02 3229 * must return 1 from this function.
eecc48000a Johannes Berg 2011-05-04 3230 *
eecc48000a Johannes Berg 2011-05-04 3231 * @resume: If WoWLAN was configured, this indicates that mac80211 is
eecc48000a Johannes Berg 2011-05-04 3232 * now resuming its operation, after this the device must be fully
eecc48000a Johannes Berg 2011-05-04 3233 * functional again. If this returns an error, the only way out is
eecc48000a Johannes Berg 2011-05-04 3234 * to also unregister the device. If it returns 1, then mac80211
eecc48000a Johannes Berg 2011-05-04 3235 * will also go through the regular complete restart on resume.
eecc48000a Johannes Berg 2011-05-04 3236 *
d13e141481 Johannes Berg 2012-06-09 3237 * @set_wakeup: Enable or disable wakeup when WoWLAN configuration is
d13e141481 Johannes Berg 2012-06-09 3238 * modified. The reason is that device_set_wakeup_enable() is
d13e141481 Johannes Berg 2012-06-09 3239 * supposed to be called when the configuration changes, not only
d13e141481 Johannes Berg 2012-06-09 3240 * in suspend().
d13e141481 Johannes Berg 2012-06-09 3241 *
75a5f0ccfd Johannes Berg 2007-09-18 3242 * @add_interface: Called when a netdevice attached to the hardware is
e37d4dffdf Bob Copeland 2008-10-20 3243 * enabled. Because it is not called for monitor mode devices, @start
75a5f0ccfd Johannes Berg 2007-09-18 3244 * and @stop must be implemented.
4150c57212 Johannes Berg 2007-09-17 3245 * The driver should perform any initialization it needs before
4150c57212 Johannes Berg 2007-09-17 3246 * the device can be enabled. The initial configuration for the
4150c57212 Johannes Berg 2007-09-17 3247 * interface is given in the conf parameter.
75a5f0ccfd Johannes Berg 2007-09-18 3248 * The callback may refuse to add an interface by returning a
75a5f0ccfd Johannes Berg 2007-09-18 3249 * negative error code (which will be seen in userspace.)
e1781ed33a Kalle Valo 2009-12-23 3250 * Must be implemented and can sleep.
75a5f0ccfd Johannes Berg 2007-09-18 3251 *
34d4bc4d41 Johannes Berg 2010-08-27 3252 * @change_interface: Called when a netdevice changes type. This callback
34d4bc4d41 Johannes Berg 2010-08-27 3253 * is optional, but only if it is supported can interface types be
34d4bc4d41 Johannes Berg 2010-08-27 3254 * switched while the interface is UP. The callback may sleep.
34d4bc4d41 Johannes Berg 2010-08-27 3255 * Note that while an interface is being switched, it will not be
34d4bc4d41 Johannes Berg 2010-08-27 3256 * found by the interface iteration callbacks.
34d4bc4d41 Johannes Berg 2010-08-27 3257 *
75a5f0ccfd Johannes Berg 2007-09-18 3258 * @remove_interface: Notifies a driver that an interface is going down.
75a5f0ccfd Johannes Berg 2007-09-18 3259 * The @stop callback is called after this if it is the last interface
75a5f0ccfd Johannes Berg 2007-09-18 3260 * and no monitor interfaces are present.
4150c57212 Johannes Berg 2007-09-17 3261 * When all interfaces are removed, the MAC address in the hardware
4150c57212 Johannes Berg 2007-09-17 3262 * must be cleared so the device no longer acknowledges packets,
4150c57212 Johannes Berg 2007-09-17 3263 * the mac_addr member of the conf structure is, however, set to the
4150c57212 Johannes Berg 2007-09-17 3264 * MAC address of the device going away.
e1781ed33a Kalle Valo 2009-12-23 3265 * Hence, this callback must be implemented. It can sleep.
4150c57212 Johannes Berg 2007-09-17 3266 *
75a5f0ccfd Johannes Berg 2007-09-18 3267 * @config: Handler for configuration requests. IEEE 802.11 code calls this
75a5f0ccfd Johannes Berg 2007-09-18 3268 * function to change hardware configuration, e.g., channel.
6dd1bf3118 Bob Copeland 2009-01-08 3269 * This function should never fail but returns a negative error code
e1781ed33a Kalle Valo 2009-12-23 3270 * if it does. The callback can sleep.
4150c57212 Johannes Berg 2007-09-17 3271 *
471b3efdfc Johannes Berg 2007-12-28 3272 * @bss_info_changed: Handler for configuration requests related to BSS
471b3efdfc Johannes Berg 2007-12-28 3273 * parameters that may vary during BSS's lifespan, and may affect low
471b3efdfc Johannes Berg 2007-12-28 3274 * level driver (e.g. assoc/disassoc status, erp parameters).
471b3efdfc Johannes Berg 2007-12-28 3275 * This function should not be used if no BSS has been set, unless
471b3efdfc Johannes Berg 2007-12-28 3276 * for association indication. The @changed parameter indicates which
e1781ed33a Kalle Valo 2009-12-23 3277 * of the bss parameters has changed when a call is made. The callback
e1781ed33a Kalle Valo 2009-12-23 3278 * can sleep.
471b3efdfc Johannes Berg 2007-12-28 3279 *
3ac64beecd Johannes Berg 2009-08-17 3280 * @prepare_multicast: Prepare for multicast filter configuration.
3ac64beecd Johannes Berg 2009-08-17 3281 * This callback is optional, and its return value is passed
3ac64beecd Johannes Berg 2009-08-17 3282 * to configure_filter(). This callback must be atomic.
3ac64beecd Johannes Berg 2009-08-17 3283 *
75a5f0ccfd Johannes Berg 2007-09-18 3284 * @configure_filter: Configure the device's RX filter.
75a5f0ccfd Johannes Berg 2007-09-18 3285 * See the section "Frame filtering" for more information.
e1781ed33a Kalle Valo 2009-12-23 3286 * This callback must be implemented and can sleep.
8f20fc2498 Johannes Berg 2007-08-28 3287 *
1b09b5568e Andrei Otcheretianski 2015-08-15 3288 * @config_iface_filter: Configure the interface's RX filter.
1b09b5568e Andrei Otcheretianski 2015-08-15 3289 * This callback is optional and is used to configure which frames
1b09b5568e Andrei Otcheretianski 2015-08-15 3290 * should be passed to mac80211. The filter_flags is the combination
1b09b5568e Andrei Otcheretianski 2015-08-15 3291 * of FIF_* flags. The changed_flags is a bit mask that indicates
1b09b5568e Andrei Otcheretianski 2015-08-15 3292 * which flags are changed.
1b09b5568e Andrei Otcheretianski 2015-08-15 3293 * This callback can sleep.
1b09b5568e Andrei Otcheretianski 2015-08-15 3294 *
546c80c91f Luis R. Rodriguez 2008-08-14 3295 * @set_tim: Set TIM bit. mac80211 calls this function when a TIM bit
17741cdc26 Johannes Berg 2008-09-11 3296 * must be set or cleared for a given STA. Must be atomic.
11a843b7e1 Johannes Berg 2007-08-28 3297 *
75a5f0ccfd Johannes Berg 2007-09-18 3298 * @set_key: See the section "Hardware crypto acceleration"
e1781ed33a Kalle Valo 2009-12-23 3299 * This callback is only called between add_interface and
e1781ed33a Kalle Valo 2009-12-23 3300 * remove_interface calls, i.e. while the given virtual interface
dc822b5db4 Johannes Berg 2008-12-29 3301 * is enabled.
6dd1bf3118 Bob Copeland 2009-01-08 3302 * Returns a negative error code if the key can't be added.
e1781ed33a Kalle Valo 2009-12-23 3303 * The callback can sleep.
11a843b7e1 Johannes Berg 2007-08-28 3304 *
9ae4fda332 Emmanuel Grumbach 2008-03-20 3305 * @update_tkip_key: See the section "Hardware crypto acceleration"
9ae4fda332 Emmanuel Grumbach 2008-03-20 3306 * This callback will be called in the context of Rx. Called for drivers
9ae4fda332 Emmanuel Grumbach 2008-03-20 3307 * which set IEEE80211_KEY_FLAG_TKIP_REQ_RX_P1_KEY.
eb807fb238 Kalle Valo 2010-01-24 3308 * The callback must be atomic.
9ae4fda332 Emmanuel Grumbach 2008-03-20 3309 *
c68f4b892c Johannes Berg 2011-07-05 3310 * @set_rekey_data: If the device supports GTK rekeying, for example while the
c68f4b892c Johannes Berg 2011-07-05 3311 * host is suspended, it can assign this callback to retrieve the data
c68f4b892c Johannes Berg 2011-07-05 3312 * necessary to do GTK rekeying, this is the KEK, KCK and replay counter.
c68f4b892c Johannes Berg 2011-07-05 3313 * After rekeying was done it should (for example during resume) notify
c68f4b892c Johannes Berg 2011-07-05 3314 * userspace of the new replay counter using ieee80211_gtk_rekey_notify().
c68f4b892c Johannes Berg 2011-07-05 3315 *
de5fad8157 Yoni Divinsky 2012-05-30 3316 * @set_default_unicast_key: Set the default (unicast) key index, useful for
de5fad8157 Yoni Divinsky 2012-05-30 3317 * WEP when the device sends data packets autonomously, e.g. for ARP
de5fad8157 Yoni Divinsky 2012-05-30 3318 * offloading. The index can be 0-3, or -1 for unsetting it.
de5fad8157 Yoni Divinsky 2012-05-30 3319 *
75a5f0ccfd Johannes Berg 2007-09-18 3320 * @hw_scan: Ask the hardware to service the scan request, no need to start
8318d78a44 Johannes Berg 2008-01-24 3321 * the scan state machine in stack. The scan must honour the channel
9050bdd858 Kalle Valo 2009-03-22 3322 * configuration done by the regulatory agent in the wiphy's
9050bdd858 Kalle Valo 2009-03-22 3323 * registered bands. The hardware (or the driver) needs to make sure
de95a54b1a Johannes Berg 2009-04-01 3324 * that power save is disabled.
de95a54b1a Johannes Berg 2009-04-01 3325 * The @req ie/ie_len members are rewritten by mac80211 to contain the
de95a54b1a Johannes Berg 2009-04-01 3326 * entire IEs after the SSID, so that drivers need not look at these
de95a54b1a Johannes Berg 2009-04-01 3327 * at all but just send them after the SSID -- mac80211 includes the
de95a54b1a Johannes Berg 2009-04-01 3328 * (extended) supported rates and HT information (where applicable).
de95a54b1a Johannes Berg 2009-04-01 3329 * When the scan finishes, ieee80211_scan_completed() must be called;
de95a54b1a Johannes Berg 2009-04-01 3330 * note that it also must be called when the scan cannot finish due to
de95a54b1a Johannes Berg 2009-04-01 3331 * any error unless this callback returned a negative error code.
e9da68ddea Johannes Berg 2018-10-18 3332 * This callback is also allowed to return the special return value 1,
e9da68ddea Johannes Berg 2018-10-18 3333 * this indicates that hardware scan isn't desirable right now and a
e9da68ddea Johannes Berg 2018-10-18 3334 * software scan should be done instead. A driver wishing to use this
e9da68ddea Johannes Berg 2018-10-18 3335 * capability must ensure its (hardware) scan capabilities aren't
e9da68ddea Johannes Berg 2018-10-18 3336 * advertised as more capable than mac80211's software scan is.
e1781ed33a Kalle Valo 2009-12-23 3337 * The callback can sleep.
11a843b7e1 Johannes Berg 2007-08-28 3338 *
b856439b1b Eliad Peller 2011-06-13 3339 * @cancel_hw_scan: Ask the low-level tp cancel the active hw scan.
b856439b1b Eliad Peller 2011-06-13 3340 * The driver should ask the hardware to cancel the scan (if possible),
b856439b1b Eliad Peller 2011-06-13 3341 * but the scan will be completed only after the driver will call
b856439b1b Eliad Peller 2011-06-13 3342 * ieee80211_scan_completed().
b856439b1b Eliad Peller 2011-06-13 3343 * This callback is needed for wowlan, to prevent enqueueing a new
b856439b1b Eliad Peller 2011-06-13 3344 * scan_work after the low-level driver was already suspended.
b856439b1b Eliad Peller 2011-06-13 3345 * The callback can sleep.
b856439b1b Eliad Peller 2011-06-13 3346 *
79f460ca49 Luciano Coelho 2011-05-11 3347 * @sched_scan_start: Ask the hardware to start scanning repeatedly at
79f460ca49 Luciano Coelho 2011-05-11 3348 * specific intervals. The driver must call the
79f460ca49 Luciano Coelho 2011-05-11 3349 * ieee80211_sched_scan_results() function whenever it finds results.
79f460ca49 Luciano Coelho 2011-05-11 3350 * This process will continue until sched_scan_stop is called.
79f460ca49 Luciano Coelho 2011-05-11 3351 *
79f460ca49 Luciano Coelho 2011-05-11 3352 * @sched_scan_stop: Tell the hardware to stop an ongoing scheduled scan.
37e3308cb2 Johannes Berg 2014-02-17 3353 * In this case, ieee80211_sched_scan_stopped() must not be called.
79f460ca49 Luciano Coelho 2011-05-11 3354 *
80e775bf08 Michael Buesch 2009-02-20 3355 * @sw_scan_start: Notifier function that is called just before a software scan
80e775bf08 Michael Buesch 2009-02-20 3356 * is started. Can be NULL, if the driver doesn't need this notification.
a344d6778a Johannes Berg 2014-06-12 3357 * The mac_addr parameter allows supporting NL80211_SCAN_FLAG_RANDOM_ADDR,
a344d6778a Johannes Berg 2014-06-12 3358 * the driver may set the NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR flag if it
a344d6778a Johannes Berg 2014-06-12 3359 * can use this parameter. The callback can sleep.
80e775bf08 Michael Buesch 2009-02-20 3360 *
e1781ed33a Kalle Valo 2009-12-23 3361 * @sw_scan_complete: Notifier function that is called just after a
e1781ed33a Kalle Valo 2009-12-23 3362 * software scan finished. Can be NULL, if the driver doesn't need
e1781ed33a Kalle Valo 2009-12-23 3363 * this notification.
e1781ed33a Kalle Valo 2009-12-23 3364 * The callback can sleep.
80e775bf08 Michael Buesch 2009-02-20 3365 *
6dd1bf3118 Bob Copeland 2009-01-08 3366 * @get_stats: Return low-level statistics.
6dd1bf3118 Bob Copeland 2009-01-08 3367 * Returns zero if statistics are available.
e1781ed33a Kalle Valo 2009-12-23 3368 * The callback can sleep.
7ac1bd6aec Johannes Berg 2007-09-14 3369 *
9352c19f63 Johannes Berg 2015-04-20 3370 * @get_key_seq: If your device implements encryption in hardware and does
9352c19f63 Johannes Berg 2015-04-20 3371 * IV/PN assignment then this callback should be provided to read the
9352c19f63 Johannes Berg 2015-04-20 3372 * IV/PN for the given key from hardware.
e1781ed33a Kalle Valo 2009-12-23 3373 * The callback must be atomic.
75a5f0ccfd Johannes Berg 2007-09-18 3374 *
f23a478075 Arik Nemtsov 2010-11-08 3375 * @set_frag_threshold: Configuration of fragmentation threshold. Assign this
f3fe4e93dd Sara Sharon 2016-10-18 3376 * if the device does fragmentation by itself. Note that to prevent the
f3fe4e93dd Sara Sharon 2016-10-18 3377 * stack from doing fragmentation IEEE80211_HW_SUPPORTS_TX_FRAG
f3fe4e93dd Sara Sharon 2016-10-18 3378 * should be set as well.
f23a478075 Arik Nemtsov 2010-11-08 3379 * The callback can sleep.
f23a478075 Arik Nemtsov 2010-11-08 3380 *
75a5f0ccfd Johannes Berg 2007-09-18 3381 * @set_rts_threshold: Configuration of RTS threshold (if device needs it)
e1781ed33a Kalle Valo 2009-12-23 3382 * The callback can sleep.
75a5f0ccfd Johannes Berg 2007-09-18 3383 *
34e895075e Johannes Berg 2010-02-03 3384 * @sta_add: Notifies low level driver about addition of an associated station,
34e895075e Johannes Berg 2010-02-03 3385 * AP, IBSS/WDS/mesh peer etc. This callback can sleep.
34e895075e Johannes Berg 2010-02-03 3386 *
34e895075e Johannes Berg 2010-02-03 3387 * @sta_remove: Notifies low level driver about removal of an associated
6a9d1b91f3 Johannes Berg 2013-12-04 3388 * station, AP, IBSS/WDS/mesh peer etc. Note that after the callback
6a9d1b91f3 Johannes Berg 2013-12-04 3389 * returns it isn't safe to use the pointer, not even RCU protected;
6a9d1b91f3 Johannes Berg 2013-12-04 3390 * no RCU grace period is guaranteed between returning here and freeing
6a9d1b91f3 Johannes Berg 2013-12-04 3391 * the station. See @sta_pre_rcu_remove if needed.
6a9d1b91f3 Johannes Berg 2013-12-04 3392 * This callback can sleep.
34e895075e Johannes Berg 2010-02-03 3393 *
77d2ece6fd Sujith Manoharan 2012-11-20 3394 * @sta_add_debugfs: Drivers can use this callback to add debugfs files
77d2ece6fd Sujith Manoharan 2012-11-20 3395 * when a station is added to mac80211's station list. This callback
c7e9dbcf09 Johannes Berg 2016-09-14 3396 * should be within a CONFIG_MAC80211_DEBUGFS conditional. This
c7e9dbcf09 Johannes Berg 2016-09-14 3397 * callback can sleep.
77d2ece6fd Sujith Manoharan 2012-11-20 3398 *
34e895075e Johannes Berg 2010-02-03 3399 * @sta_notify: Notifies low level driver about power state transition of an
d057e5a381 Arik Nemtsov 2011-01-31 3400 * associated station, AP, IBSS/WDS/mesh peer etc. For a VIF operating
d057e5a381 Arik Nemtsov 2011-01-31 3401 * in AP mode, this callback will not be called when the flag
d057e5a381 Arik Nemtsov 2011-01-31 3402 * %IEEE80211_HW_AP_LINK_PS is set. Must be atomic.
4571d3bf87 Christian Lamparter 2008-11-30 3403 *
f09603a259 Johannes Berg 2012-01-20 3404 * @sta_state: Notifies low level driver about state transition of a
f09603a259 Johannes Berg 2012-01-20 3405 * station (which can be the AP, a client, IBSS/WDS/mesh peer etc.)
f09603a259 Johannes Berg 2012-01-20 3406 * This callback is mutually exclusive with @sta_add/@sta_remove.
f09603a259 Johannes Berg 2012-01-20 3407 * It must not fail for down transitions but may fail for transitions
6a9d1b91f3 Johannes Berg 2013-12-04 3408 * up the list of states. Also note that after the callback returns it
6a9d1b91f3 Johannes Berg 2013-12-04 3409 * isn't safe to use the pointer, not even RCU protected - no RCU grace
6a9d1b91f3 Johannes Berg 2013-12-04 3410 * period is guaranteed between returning here and freeing the station.
6a9d1b91f3 Johannes Berg 2013-12-04 3411 * See @sta_pre_rcu_remove if needed.
6a9d1b91f3 Johannes Berg 2013-12-04 3412 * The callback can sleep.
6a9d1b91f3 Johannes Berg 2013-12-04 3413 *
6a9d1b91f3 Johannes Berg 2013-12-04 3414 * @sta_pre_rcu_remove: Notify driver about station removal before RCU
6a9d1b91f3 Johannes Berg 2013-12-04 3415 * synchronisation. This is useful if a driver needs to have station
6a9d1b91f3 Johannes Berg 2013-12-04 3416 * pointers protected using RCU, it can then use this call to clear
6a9d1b91f3 Johannes Berg 2013-12-04 3417 * the pointers instead of waiting for an RCU grace period to elapse
6a9d1b91f3 Johannes Berg 2013-12-04 3418 * in @sta_state.
f09603a259 Johannes Berg 2012-01-20 3419 * The callback can sleep.
f09603a259 Johannes Berg 2012-01-20 3420 *
8f727ef3c4 Johannes Berg 2012-03-30 3421 * @sta_rc_update: Notifies the driver of changes to the bitrates that can be
8f727ef3c4 Johannes Berg 2012-03-30 3422 * used to transmit to the station. The changes are advertised with bits
8f727ef3c4 Johannes Berg 2012-03-30 3423 * from &enum ieee80211_rate_control_changed and the values are reflected
8f727ef3c4 Johannes Berg 2012-03-30 3424 * in the station data. This callback should only be used when the driver
8f727ef3c4 Johannes Berg 2012-03-30 3425 * uses hardware rate control (%IEEE80211_HW_HAS_RATE_CONTROL) since
8f727ef3c4 Johannes Berg 2012-03-30 3426 * otherwise the rate control algorithm is notified directly.
8f727ef3c4 Johannes Berg 2012-03-30 3427 * Must be atomic.
f815e2b3c0 Johannes Berg 2014-11-19 3428 * @sta_rate_tbl_update: Notifies the driver that the rate table changed. This
f815e2b3c0 Johannes Berg 2014-11-19 3429 * is only used if the configured rate control algorithm actually uses
f815e2b3c0 Johannes Berg 2014-11-19 3430 * the new rate table API, and is therefore optional. Must be atomic.
8f727ef3c4 Johannes Berg 2012-03-30 3431 *
2b9a7e1bac Johannes Berg 2014-11-17 3432 * @sta_statistics: Get statistics for this station. For example with beacon
2b9a7e1bac Johannes Berg 2014-11-17 3433 * filtering, the statistics kept by mac80211 might not be accurate, so
2b9a7e1bac Johannes Berg 2014-11-17 3434 * let the driver pre-fill the statistics. The driver can fill most of
2b9a7e1bac Johannes Berg 2014-11-17 3435 * the values (indicating which by setting the filled bitmap), but not
2b9a7e1bac Johannes Berg 2014-11-17 3436 * all of them make sense - see the source for which ones are possible.
2b9a7e1bac Johannes Berg 2014-11-17 3437 * Statistics that the driver doesn't fill will be filled by mac80211.
2b9a7e1bac Johannes Berg 2014-11-17 3438 * The callback can sleep.
2b9a7e1bac Johannes Berg 2014-11-17 3439 *
75a5f0ccfd Johannes Berg 2007-09-18 3440 * @conf_tx: Configure TX queue parameters (EDCF (aifs, cw_min, cw_max),
fe3fa82731 Johannes Berg 2008-09-08 3441 * bursting) for a hardware TX queue.
6dd1bf3118 Bob Copeland 2009-01-08 3442 * Returns a negative error code on failure.
e1781ed33a Kalle Valo 2009-12-23 3443 * The callback can sleep.
75a5f0ccfd Johannes Berg 2007-09-18 3444 *
75a5f0ccfd Johannes Berg 2007-09-18 3445 * @get_tsf: Get the current TSF timer value from firmware/hardware. Currently,
3b5d665b51 Alina Friedrichsen 2009-01-24 3446 * this is only used for IBSS mode BSSID merging and debugging. Is not a
7b08b3b4a9 Alina Friedrichsen 2009-02-05 3447 * required function.
e1781ed33a Kalle Valo 2009-12-23 3448 * The callback can sleep.
3b5d665b51 Alina Friedrichsen 2009-01-24 3449 *
3b5d665b51 Alina Friedrichsen 2009-01-24 3450 * @set_tsf: Set the TSF timer to the specified value in the firmware/hardware.
3b5d665b51 Alina Friedrichsen 2009-01-24 3451 * Currently, this is only used for IBSS mode debugging. Is not a
7b08b3b4a9 Alina Friedrichsen 2009-02-05 3452 * required function.
e1781ed33a Kalle Valo 2009-12-23 3453 * The callback can sleep.
75a5f0ccfd Johannes Berg 2007-09-18 3454 *
354d381baf Pedersen, Thomas 2016-09-28 3455 * @offset_tsf: Offset the TSF timer by the specified value in the
354d381baf Pedersen, Thomas 2016-09-28 3456 * firmware/hardware. Preferred to set_tsf as it avoids delay between
354d381baf Pedersen, Thomas 2016-09-28 3457 * calling set_tsf() and hardware getting programmed, which will show up
354d381baf Pedersen, Thomas 2016-09-28 3458 * as TSF delay. Is not a required function.
354d381baf Pedersen, Thomas 2016-09-28 3459 * The callback can sleep.
354d381baf Pedersen, Thomas 2016-09-28 3460 *
75a5f0ccfd Johannes Berg 2007-09-18 3461 * @reset_tsf: Reset the TSF timer and allow firmware/hardware to synchronize
75a5f0ccfd Johannes Berg 2007-09-18 3462 * with other STAs in the IBSS. This is only used in IBSS mode. This
75a5f0ccfd Johannes Berg 2007-09-18 3463 * function is optional if the firmware/hardware takes full care of
75a5f0ccfd Johannes Berg 2007-09-18 3464 * TSF synchronization.
e1781ed33a Kalle Valo 2009-12-23 3465 * The callback can sleep.
75a5f0ccfd Johannes Berg 2007-09-18 3466 *
75a5f0ccfd Johannes Berg 2007-09-18 3467 * @tx_last_beacon: Determine whether the last IBSS beacon was sent by us.
75a5f0ccfd Johannes Berg 2007-09-18 3468 * This is needed only for IBSS mode and the result of this function is
75a5f0ccfd Johannes Berg 2007-09-18 3469 * used to determine whether to reply to Probe Requests.
6dd1bf3118 Bob Copeland 2009-01-08 3470 * Returns non-zero if this device sent the last beacon.
e1781ed33a Kalle Valo 2009-12-23 3471 * The callback can sleep.
d3c990fb26 Ron Rindjunsky 2007-11-26 3472 *
4e8998f09b Randy Dunlap 2010-05-21 3473 * @get_survey: Return per-channel survey information
4e8998f09b Randy Dunlap 2010-05-21 3474 *
1f87f7d3a3 Johannes Berg 2009-06-02 3475 * @rfkill_poll: Poll rfkill hardware state. If you need this, you also
1f87f7d3a3 Johannes Berg 2009-06-02 3476 * need to set wiphy->rfkill_poll to %true before registration,
1f87f7d3a3 Johannes Berg 2009-06-02 3477 * and need to call wiphy_rfkill_set_hw_state() in the callback.
e1781ed33a Kalle Valo 2009-12-23 3478 * The callback can sleep.
aff89a9b90 Johannes Berg 2009-07-01 3479 *
310bc676e3 Lukáš Turek 2009-12-21 3480 * @set_coverage_class: Set slot time for given coverage class as specified
310bc676e3 Lukáš Turek 2009-12-21 3481 * in IEEE 802.11-2007 section 17.3.8.6 and modify ACK timeout
a4bcaf5556 Lorenzo Bianconi 2014-09-04 3482 * accordingly; coverage class equals to -1 to enable ACK timeout
a4bcaf5556 Lorenzo Bianconi 2014-09-04 3483 * estimation algorithm (dynack). To disable dynack set valid value for
a4bcaf5556 Lorenzo Bianconi 2014-09-04 3484 * coverage class. This callback is not required and may sleep.
310bc676e3 Lukáš Turek 2009-12-21 3485 *
52981cd794 David Spinadel 2013-07-31 3486 * @testmode_cmd: Implement a cfg80211 test mode command. The passed @vif may
52981cd794 David Spinadel 2013-07-31 3487 * be %NULL. The callback can sleep.
71063f0e89 Wey-Yi Guy 2011-05-20 3488 * @testmode_dump: Implement a cfg80211 test mode dump. The callback can sleep.
a80f7c0b08 Johannes Berg 2009-12-23 3489 *
a80f7c0b08 Johannes Berg 2009-12-23 3490 * @flush: Flush all pending frames from the hardware queue, making sure
39ecc01d1b Johannes Berg 2013-02-13 3491 * that the hardware queues are empty. The @queues parameter is a bitmap
39ecc01d1b Johannes Berg 2013-02-13 3492 * of queues to flush, which is useful if different virtual interfaces
39ecc01d1b Johannes Berg 2013-02-13 3493 * use different hardware queues; it may also indicate all queues.
39ecc01d1b Johannes Berg 2013-02-13 3494 * If the parameter @drop is set to %true, pending frames may be dropped.
77be2c54c5 Emmanuel Grumbach 2014-03-27 3495 * Note that vif can be NULL.
39ecc01d1b Johannes Berg 2013-02-13 3496 * The callback can sleep.
5ce6e438d5 Johannes Berg 2010-05-11 3497 *
5ce6e438d5 Johannes Berg 2010-05-11 3498 * @channel_switch: Drivers that need (or want) to offload the channel
5ce6e438d5 Johannes Berg 2010-05-11 3499 * switch operation for CSAs received from the AP may implement this
5ce6e438d5 Johannes Berg 2010-05-11 3500 * callback. They must then call ieee80211_chswitch_done() to indicate
5ce6e438d5 Johannes Berg 2010-05-11 3501 * completion of the channel switch.
4e6cbfd09c John W. Linville 2010-07-29 3502 *
79b1c460a0 Bruno Randolf 2010-11-24 3503 * @set_antenna: Set antenna configuration (tx_ant, rx_ant) on the device.
79b1c460a0 Bruno Randolf 2010-11-24 3504 * Parameters are bitmaps of allowed antennas to use for TX/RX. Drivers may
79b1c460a0 Bruno Randolf 2010-11-24 3505 * reject TX/RX mask combinations they cannot support by returning -EINVAL
79b1c460a0 Bruno Randolf 2010-11-24 3506 * (also see nl80211.h @NL80211_ATTR_WIPHY_ANTENNA_TX).
79b1c460a0 Bruno Randolf 2010-11-24 3507 *
79b1c460a0 Bruno Randolf 2010-11-24 3508 * @get_antenna: Get current antenna configuration from device (tx_ant, rx_ant).
4976b4eb9d Johannes Berg 2011-01-04 3509 *
4976b4eb9d Johannes Berg 2011-01-04 3510 * @remain_on_channel: Starts an off-channel period on the given channel, must
4976b4eb9d Johannes Berg 2011-01-04 3511 * call back to ieee80211_ready_on_channel() when on that channel. Note
4976b4eb9d Johannes Berg 2011-01-04 3512 * that normal channel traffic is not stopped as this is intended for hw
4976b4eb9d Johannes Berg 2011-01-04 3513 * offload. Frames to transmit on the off-channel channel are transmitted
4976b4eb9d Johannes Berg 2011-01-04 3514 * normally except for the %IEEE80211_TX_CTL_TX_OFFCHAN flag. When the
4976b4eb9d Johannes Berg 2011-01-04 3515 * duration (which will always be non-zero) expires, the driver must call
196ac1c13d Johannes Berg 2012-06-05 3516 * ieee80211_remain_on_channel_expired().
196ac1c13d Johannes Berg 2012-06-05 3517 * Note that this callback may be called while the device is in IDLE and
196ac1c13d Johannes Berg 2012-06-05 3518 * must be accepted in this case.
196ac1c13d Johannes Berg 2012-06-05 3519 * This callback may sleep.
4976b4eb9d Johannes Berg 2011-01-04 3520 * @cancel_remain_on_channel: Requests that an ongoing off-channel period is
4976b4eb9d Johannes Berg 2011-01-04 3521 * aborted before it expires. This callback may sleep.
38c091590f John W. Linville 2011-03-07 3522 *
38c091590f John W. Linville 2011-03-07 3523 * @set_ringparam: Set tx and rx ring sizes.
38c091590f John W. Linville 2011-03-07 3524 *
38c091590f John W. Linville 2011-03-07 3525 * @get_ringparam: Get tx and rx ring current and maximum sizes.
e8306f9894 Vivek Natarajan 2011-04-06 3526 *
e8306f9894 Vivek Natarajan 2011-04-06 3527 * @tx_frames_pending: Check if there is any pending frame in the hardware
e8306f9894 Vivek Natarajan 2011-04-06 3528 * queues before entering power save.
bdbfd6b582 Sujith Manoharan 2011-04-27 3529 *
bdbfd6b582 Sujith Manoharan 2011-04-27 3530 * @set_bitrate_mask: Set a mask of rates to be used for rate control selection
bdbfd6b582 Sujith Manoharan 2011-04-27 3531 * when transmitting a frame. Currently only legacy rates are handled.
bdbfd6b582 Sujith Manoharan 2011-04-27 3532 * The callback can sleep.
a818292952 Emmanuel Grumbach 2015-03-16 3533 * @event_callback: Notify driver about any event in mac80211. See
a818292952 Emmanuel Grumbach 2015-03-16 3534 * &enum ieee80211_event_type for the different types.
6382246e89 Emmanuel Grumbach 2015-04-20 3535 * The callback must be atomic.
4049e09acd Johannes Berg 2011-09-29 3536 *
4049e09acd Johannes Berg 2011-09-29 3537 * @release_buffered_frames: Release buffered frames according to the given
4049e09acd Johannes Berg 2011-09-29 3538 * parameters. In the case where the driver buffers some frames for
4049e09acd Johannes Berg 2011-09-29 3539 * sleeping stations mac80211 will use this callback to tell the driver
4049e09acd Johannes Berg 2011-09-29 3540 * to release some frames, either for PS-poll or uAPSD.
e227867f12 Masanari Iida 2014-02-18 3541 * Note that if the @more_data parameter is %false the driver must check
4049e09acd Johannes Berg 2011-09-29 3542 * if there are more frames on the given TIDs, and if there are more than
4049e09acd Johannes Berg 2011-09-29 3543 * the frames being released then it must still set the more-data bit in
4049e09acd Johannes Berg 2011-09-29 3544 * the frame. If the @more_data parameter is %true, then of course the
4049e09acd Johannes Berg 2011-09-29 3545 * more-data bit must always be set.
4049e09acd Johannes Berg 2011-09-29 3546 * The @tids parameter tells the driver which TIDs to release frames
4049e09acd Johannes Berg 2011-09-29 3547 * from, for PS-poll it will always have only a single bit set.
deeaee197b Johannes Berg 2011-09-29 3548 * In the case this is used for a PS-poll initiated release, the
deeaee197b Johannes Berg 2011-09-29 3549 * @num_frames parameter will always be 1 so code can be shared. In
deeaee197b Johannes Berg 2011-09-29 3550 * this case the driver must also set %IEEE80211_TX_STATUS_EOSP flag
deeaee197b Johannes Berg 2011-09-29 3551 * on the TX status (and must report TX status) so that the PS-poll
deeaee197b Johannes Berg 2011-09-29 3552 * period is properly ended. This is used to avoid sending multiple
deeaee197b Johannes Berg 2011-09-29 3553 * responses for a retried PS-poll frame.
4049e09acd Johannes Berg 2011-09-29 3554 * In the case this is used for uAPSD, the @num_frames parameter may be
4049e09acd Johannes Berg 2011-09-29 3555 * bigger than one, but the driver may send fewer frames (it must send
4049e09acd Johannes Berg 2011-09-29 3556 * at least one, however). In this case it is also responsible for
47086fc51a Johannes Berg 2011-09-29 3557 * setting the EOSP flag in the QoS header of the frames. Also, when the
47086fc51a Johannes Berg 2011-09-29 3558 * service period ends, the driver must set %IEEE80211_TX_STATUS_EOSP
37fbd90800 Johannes Berg 2011-09-29 3559 * on the last frame in the SP. Alternatively, it may call the function
e943789edb Johannes Berg 2013-02-15 3560 * ieee80211_sta_eosp() to inform mac80211 of the end of the SP.
4049e09acd Johannes Berg 2011-09-29 3561 * This callback must be atomic.
40b9640883 Johannes Berg 2011-09-29 3562 * @allow_buffered_frames: Prepare device to allow the given number of frames
40b9640883 Johannes Berg 2011-09-29 3563 * to go out to the given station. The frames will be sent by mac80211
40b9640883 Johannes Berg 2011-09-29 3564 * via the usual TX path after this call. The TX information for frames
02f2f1a951 Johannes Berg 2012-02-27 3565 * released will also have the %IEEE80211_TX_CTL_NO_PS_BUFFER flag set
40b9640883 Johannes Berg 2011-09-29 3566 * and the last one will also have %IEEE80211_TX_STATUS_EOSP set. In case
40b9640883 Johannes Berg 2011-09-29 3567 * frames from multiple TIDs are released and the driver might reorder
40b9640883 Johannes Berg 2011-09-29 3568 * them between the TIDs, it must set the %IEEE80211_TX_STATUS_EOSP flag
40b9640883 Johannes Berg 2011-09-29 3569 * on the last frame and clear it on all others and also handle the EOSP
37fbd90800 Johannes Berg 2011-09-29 3570 * bit in the QoS header correctly. Alternatively, it can also call the
e943789edb Johannes Berg 2013-02-15 3571 * ieee80211_sta_eosp() function.
40b9640883 Johannes Berg 2011-09-29 3572 * The @tids parameter is a bitmap and tells the driver which TIDs the
40b9640883 Johannes Berg 2011-09-29 3573 * frames will be on; it will at most have two bits set.
40b9640883 Johannes Berg 2011-09-29 3574 * This callback must be atomic.
e352114fd6 Ben Greear 2012-04-23 3575 *
e352114fd6 Ben Greear 2012-04-23 3576 * @get_et_sset_count: Ethtool API to get string-set count.
e352114fd6 Ben Greear 2012-04-23 3577 *
e352114fd6 Ben Greear 2012-04-23 3578 * @get_et_stats: Ethtool API to get a set of u64 stats.
e352114fd6 Ben Greear 2012-04-23 3579 *
e352114fd6 Ben Greear 2012-04-23 3580 * @get_et_strings: Ethtool API to get a set of strings to describe stats
e352114fd6 Ben Greear 2012-04-23 3581 * and perhaps other supported types of ethtool data-sets.
e352114fd6 Ben Greear 2012-04-23 3582 *
a1845fc7c5 Johannes Berg 2012-06-27 3583 * @mgd_prepare_tx: Prepare for transmitting a management frame for association
a1845fc7c5 Johannes Berg 2012-06-27 3584 * before associated. In multi-channel scenarios, a virtual interface is
a1845fc7c5 Johannes Berg 2012-06-27 3585 * bound to a channel before it is associated, but as it isn't associated
a1845fc7c5 Johannes Berg 2012-06-27 3586 * yet it need not necessarily be given airtime, in particular since any
a1845fc7c5 Johannes Berg 2012-06-27 3587 * transmission to a P2P GO needs to be synchronized against the GO's
a1845fc7c5 Johannes Berg 2012-06-27 3588 * powersave state. mac80211 will call this function before transmitting a
a1845fc7c5 Johannes Berg 2012-06-27 3589 * management frame prior to having successfully associated to allow the
a1845fc7c5 Johannes Berg 2012-06-27 3590 * driver to give it channel time for the transmission, to get a response
a1845fc7c5 Johannes Berg 2012-06-27 3591 * and to be able to synchronize with the GO.
94ba92713f Ilan Peer 2018-02-19 3592 * For drivers that set %IEEE80211_HW_DEAUTH_NEED_MGD_TX_PREP, mac80211
94ba92713f Ilan Peer 2018-02-19 3593 * would also call this function before transmitting a deauthentication
94ba92713f Ilan Peer 2018-02-19 3594 * frame in case that no beacon was heard from the AP/P2P GO.
a1845fc7c5 Johannes Berg 2012-06-27 3595 * The callback will be called before each transmission and upon return
a1845fc7c5 Johannes Berg 2012-06-27 3596 * mac80211 will transmit the frame right away.
d4e36e5554 Ilan Peer 2018-04-20 3597 * If duration is greater than zero, mac80211 hints to the driver the
d4e36e5554 Ilan Peer 2018-04-20 3598 * duration for which the operation is requested.
a1845fc7c5 Johannes Berg 2012-06-27 3599 * The callback is optional and can (should!) sleep.
c3645eac47 Michal Kazior 2012-06-26 3600 *
ee10f2c779 Arik Nemtsov 2014-06-11 3601 * @mgd_protect_tdls_discover: Protect a TDLS discovery session. After sending
ee10f2c779 Arik Nemtsov 2014-06-11 3602 * a TDLS discovery-request, we expect a reply to arrive on the AP's
ee10f2c779 Arik Nemtsov 2014-06-11 3603 * channel. We must stay on the channel (no PSM, scan, etc.), since a TDLS
ee10f2c779 Arik Nemtsov 2014-06-11 3604 * setup-response is a direct packet not buffered by the AP.
ee10f2c779 Arik Nemtsov 2014-06-11 3605 * mac80211 will call this function just before the transmission of a TDLS
ee10f2c779 Arik Nemtsov 2014-06-11 3606 * discovery-request. The recommended period of protection is at least
ee10f2c779 Arik Nemtsov 2014-06-11 3607 * 2 * (DTIM period).
ee10f2c779 Arik Nemtsov 2014-06-11 3608 * The callback is optional and can sleep.
ee10f2c779 Arik Nemtsov 2014-06-11 3609 *
c3645eac47 Michal Kazior 2012-06-26 3610 * @add_chanctx: Notifies device driver about new channel context creation.
dcae9e0203 Chaitanya T K 2015-10-30 3611 * This callback may sleep.
c3645eac47 Michal Kazior 2012-06-26 3612 * @remove_chanctx: Notifies device driver about channel context destruction.
dcae9e0203 Chaitanya T K 2015-10-30 3613 * This callback may sleep.
c3645eac47 Michal Kazior 2012-06-26 3614 * @change_chanctx: Notifies device driver about channel context changes that
c3645eac47 Michal Kazior 2012-06-26 3615 * may happen when combining different virtual interfaces on the same
c3645eac47 Michal Kazior 2012-06-26 3616 * channel context with different settings
dcae9e0203 Chaitanya T K 2015-10-30 3617 * This callback may sleep.
c3645eac47 Michal Kazior 2012-06-26 3618 * @assign_vif_chanctx: Notifies device driver about channel context being bound
c3645eac47 Michal Kazior 2012-06-26 3619 * to vif. Possible use is for hw queue remapping.
dcae9e0203 Chaitanya T K 2015-10-30 3620 * This callback may sleep.
c3645eac47 Michal Kazior 2012-06-26 3621 * @unassign_vif_chanctx: Notifies device driver about channel context being
c3645eac47 Michal Kazior 2012-06-26 3622 * unbound from vif.
dcae9e0203 Chaitanya T K 2015-10-30 3623 * This callback may sleep.
1a5f0c13d1 Luciano Coelho 2014-05-23 3624 * @switch_vif_chanctx: switch a number of vifs from one chanctx to
1a5f0c13d1 Luciano Coelho 2014-05-23 3625 * another, as specified in the list of
1a5f0c13d1 Luciano Coelho 2014-05-23 3626 * @ieee80211_vif_chanctx_switch passed to the driver, according
1a5f0c13d1 Luciano Coelho 2014-05-23 3627 * to the mode defined in &ieee80211_chanctx_switch_mode.
dcae9e0203 Chaitanya T K 2015-10-30 3628 * This callback may sleep.
1a5f0c13d1 Luciano Coelho 2014-05-23 3629 *
1041638f2b Johannes Berg 2012-10-19 3630 * @start_ap: Start operation on the AP interface, this is called after all the
1041638f2b Johannes Berg 2012-10-19 3631 * information in bss_conf is set and beacon can be retrieved. A channel
1041638f2b Johannes Berg 2012-10-19 3632 * context is bound before this is called. Note that if the driver uses
1041638f2b Johannes Berg 2012-10-19 3633 * software scan or ROC, this (and @stop_ap) isn't called when the AP is
1041638f2b Johannes Berg 2012-10-19 3634 * just "paused" for scanning/ROC, which is indicated by the beacon being
1041638f2b Johannes Berg 2012-10-19 3635 * disabled/enabled via @bss_info_changed.
1041638f2b Johannes Berg 2012-10-19 3636 * @stop_ap: Stop operation on the AP interface.
9214ad7f9a Johannes Berg 2012-11-06 3637 *
cf2c92d840 Eliad Peller 2014-11-04 3638 * @reconfig_complete: Called after a call to ieee80211_restart_hw() and
cf2c92d840 Eliad Peller 2014-11-04 3639 * during resume, when the reconfiguration has completed.
cf2c92d840 Eliad Peller 2014-11-04 3640 * This can help the driver implement the reconfiguration step (and
cf2c92d840 Eliad Peller 2014-11-04 3641 * indicate mac80211 is ready to receive frames).
cf2c92d840 Eliad Peller 2014-11-04 3642 * This callback may sleep.
8f21b0adfe Johannes Berg 2013-01-11 3643 *
a65240c101 Johannes Berg 2013-01-14 3644 * @ipv6_addr_change: IPv6 address assignment on the given interface changed.
a65240c101 Johannes Berg 2013-01-14 3645 * Currently, this is only called for managed or P2P client interfaces.
a65240c101 Johannes Berg 2013-01-14 3646 * This callback is optional; it must not sleep.
73da7d5bab Simon Wunderlich 2013-07-11 3647 *
73da7d5bab Simon Wunderlich 2013-07-11 3648 * @channel_switch_beacon: Starts a channel switch to a new channel.
73da7d5bab Simon Wunderlich 2013-07-11 3649 * Beacons are modified to include CSA or ECSA IEs before calling this
73da7d5bab Simon Wunderlich 2013-07-11 3650 * function. The corresponding count fields in these IEs must be
66e01cf99e Luciano Coelho 2014-01-13 3651 * decremented, and when they reach 1 the driver must call
73da7d5bab Simon Wunderlich 2013-07-11 3652 * ieee80211_csa_finish(). Drivers which use ieee80211_beacon_get()
73da7d5bab Simon Wunderlich 2013-07-11 3653 * get the csa counter decremented by mac80211, but must check if it is
66e01cf99e Luciano Coelho 2014-01-13 3654 * 1 using ieee80211_csa_is_complete() after the beacon has been
73da7d5bab Simon Wunderlich 2013-07-11 3655 * transmitted and then call ieee80211_csa_finish().
66e01cf99e Luciano Coelho 2014-01-13 3656 * If the CSA count starts as zero or 1, this function will not be called,
66e01cf99e Luciano Coelho 2014-01-13 3657 * since there won't be any time to beacon before the switch anyway.
6d027bcc8a Luciano Coelho 2014-10-08 3658 * @pre_channel_switch: This is an optional callback that is called
6d027bcc8a Luciano Coelho 2014-10-08 3659 * before a channel switch procedure is started (ie. when a STA
9332ef9dbd Masahiro Yamada 2017-02-27 3660 * gets a CSA or a userspace initiated channel-switch), allowing
6d027bcc8a Luciano Coelho 2014-10-08 3661 * the driver to prepare for the channel switch.
f1d65583bc Luciano Coelho 2014-10-08 3662 * @post_channel_switch: This is an optional callback that is called
f1d65583bc Luciano Coelho 2014-10-08 3663 * after a channel switch procedure is completed, allowing the
f1d65583bc Luciano Coelho 2014-10-08 3664 * driver to go back to a normal configuration.
b9cc81d827 Sara Sharon 2019-02-06 3665 * @abort_channel_switch: This is an optional callback that is called
b9cc81d827 Sara Sharon 2019-02-06 3666 * when channel switch procedure was completed, allowing the
b9cc81d827 Sara Sharon 2019-02-06 3667 * driver to go back to a normal configuration.
fafd2bce5a Sara Sharon 2019-02-06 3668 * @channel_switch_rx_beacon: This is an optional callback that is called
fafd2bce5a Sara Sharon 2019-02-06 3669 * when channel switch procedure is in progress and additional beacon with
fafd2bce5a Sara Sharon 2019-02-06 3670 * CSA IE was received, allowing driver to track changes in count.
55fff50113 Johannes Berg 2013-08-19 3671 * @join_ibss: Join an IBSS (on an IBSS interface); this is called after all
55fff50113 Johannes Berg 2013-08-19 3672 * information in bss_conf is set up and the beacon can be retrieved. A
55fff50113 Johannes Berg 2013-08-19 3673 * channel context is bound before this is called.
55fff50113 Johannes Berg 2013-08-19 3674 * @leave_ibss: Leave the IBSS again.
cca674d47e Antonio Quartulli 2014-05-19 3675 *
cca674d47e Antonio Quartulli 2014-05-19 3676 * @get_expected_throughput: extract the expected throughput towards the
cca674d47e Antonio Quartulli 2014-05-19 3677 * specified station. The returned value is expressed in Kbps. It returns 0
cca674d47e Antonio Quartulli 2014-05-19 3678 * if the RC algorithm does not have proper data to provide.
5b3dc42b1b Felix Fietkau 2014-10-26 3679 *
5b3dc42b1b Felix Fietkau 2014-10-26 3680 * @get_txpower: get current maximum tx power (in dBm) based on configuration
5b3dc42b1b Felix Fietkau 2014-10-26 3681 * and hardware limits.
a7a6bdd067 Arik Nemtsov 2014-11-09 3682 *
a7a6bdd067 Arik Nemtsov 2014-11-09 3683 * @tdls_channel_switch: Start channel-switching with a TDLS peer. The driver
a7a6bdd067 Arik Nemtsov 2014-11-09 3684 * is responsible for continually initiating channel-switching operations
a7a6bdd067 Arik Nemtsov 2014-11-09 3685 * and returning to the base channel for communication with the AP. The
a7a6bdd067 Arik Nemtsov 2014-11-09 3686 * driver receives a channel-switch request template and the location of
a7a6bdd067 Arik Nemtsov 2014-11-09 3687 * the switch-timing IE within the template as part of the invocation.
a7a6bdd067 Arik Nemtsov 2014-11-09 3688 * The template is valid only within the call, and the driver can
a7a6bdd067 Arik Nemtsov 2014-11-09 3689 * optionally copy the skb for further re-use.
a7a6bdd067 Arik Nemtsov 2014-11-09 3690 * @tdls_cancel_channel_switch: Stop channel-switching with a TDLS peer. Both
a7a6bdd067 Arik Nemtsov 2014-11-09 3691 * peers must be on the base channel when the call completes.
8a4d32f30d Arik Nemtsov 2014-11-09 3692 * @tdls_recv_channel_switch: a TDLS channel-switch related frame (request or
8a4d32f30d Arik Nemtsov 2014-11-09 3693 * response) has been received from a remote peer. The driver gets
8a4d32f30d Arik Nemtsov 2014-11-09 3694 * parameters parsed from the incoming frame and may use them to continue
8a4d32f30d Arik Nemtsov 2014-11-09 3695 * an ongoing channel-switch operation. In addition, a channel-switch
8a4d32f30d Arik Nemtsov 2014-11-09 3696 * response template is provided, together with the location of the
8a4d32f30d Arik Nemtsov 2014-11-09 3697 * switch-timing IE within the template. The skb can only be used within
8a4d32f30d Arik Nemtsov 2014-11-09 3698 * the function call.
ba8c3d6f16 Felix Fietkau 2015-03-27 3699 *
ba8c3d6f16 Felix Fietkau 2015-03-27 3700 * @wake_tx_queue: Called when new packets have been added to the queue.
f59374eb42 Sara Sharon 2016-03-02 3701 * @sync_rx_queues: Process all pending frames in RSS queues. This is a
f59374eb42 Sara Sharon 2016-03-02 3702 * synchronization which is needed in case driver has in its RSS queues
f59374eb42 Sara Sharon 2016-03-02 3703 * pending frames that were received prior to the control path action
f59374eb42 Sara Sharon 2016-03-02 3704 * currently taken (e.g. disassociation) but are not processed yet.
708d50edb1 Ayala Beker 2016-09-20 3705 *
708d50edb1 Ayala Beker 2016-09-20 3706 * @start_nan: join an existing NAN cluster, or create a new one.
708d50edb1 Ayala Beker 2016-09-20 3707 * @stop_nan: leave the NAN cluster.
5953ff6d6a Ayala Beker 2016-09-20 3708 * @nan_change_conf: change NAN configuration. The data in cfg80211_nan_conf
5953ff6d6a Ayala Beker 2016-09-20 3709 * contains full new configuration and changes specify which parameters
5953ff6d6a Ayala Beker 2016-09-20 3710 * are changed with respect to the last NAN config.
5953ff6d6a Ayala Beker 2016-09-20 3711 * The driver gets both full configuration and the changed parameters since
5953ff6d6a Ayala Beker 2016-09-20 3712 * some devices may need the full configuration while others need only the
5953ff6d6a Ayala Beker 2016-09-20 3713 * changed parameters.
167e33f4f6 Ayala Beker 2016-09-20 3714 * @add_nan_func: Add a NAN function. Returns 0 on success. The data in
167e33f4f6 Ayala Beker 2016-09-20 3715 * cfg80211_nan_func must not be referenced outside the scope of
167e33f4f6 Ayala Beker 2016-09-20 3716 * this call.
167e33f4f6 Ayala Beker 2016-09-20 3717 * @del_nan_func: Remove a NAN function. The driver must call
167e33f4f6 Ayala Beker 2016-09-20 3718 * ieee80211_nan_func_terminated() with
167e33f4f6 Ayala Beker 2016-09-20 3719 * NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST reason code upon removal.
9739fe29a2 Sara Sharon 2018-09-05 3720 * @can_aggregate_in_amsdu: Called in order to determine if HW supports
9739fe29a2 Sara Sharon 2018-09-05 3721 * aggregating two specific frames in the same A-MSDU. The relation
9739fe29a2 Sara Sharon 2018-09-05 3722 * between the skbs should be symmetric and transitive. Note that while
9739fe29a2 Sara Sharon 2018-09-05 3723 * skb is always a real frame, head may or may not be an A-MSDU.
bc847970f4 Pradeep Kumar Chitrapu 2018-10-03 3724 * @get_ftm_responder_stats: Retrieve FTM responder statistics, if available.
bc847970f4 Pradeep Kumar Chitrapu 2018-10-03 3725 * Statistics should be cumulative, currently no way to reset is provided.
cee7013be9 Johannes Berg 2018-10-16 3726 *
cee7013be9 Johannes Berg 2018-10-16 3727 * @start_pmsr: start peer measurement (e.g. FTM) (this call can sleep)
cee7013be9 Johannes Berg 2018-10-16 3728 * @abort_pmsr: abort peer measurement (this call can sleep)
8f20fc2498 Johannes Berg 2007-08-28 3729 */
75a5f0ccfd Johannes Berg 2007-09-18 3730 struct ieee80211_ops {
36323f817a Thomas Huehn 2012-07-23 3731 void (*tx)(struct ieee80211_hw *hw,
36323f817a Thomas Huehn 2012-07-23 3732 struct ieee80211_tx_control *control,
36323f817a Thomas Huehn 2012-07-23 3733 struct sk_buff *skb);
75a5f0ccfd Johannes Berg 2007-09-18 3734 int (*start)(struct ieee80211_hw *hw);
75a5f0ccfd Johannes Berg 2007-09-18 3735 void (*stop)(struct ieee80211_hw *hw);
eecc48000a Johannes Berg 2011-05-04 3736 #ifdef CONFIG_PM
eecc48000a Johannes Berg 2011-05-04 3737 int (*suspend)(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan);
eecc48000a Johannes Berg 2011-05-04 3738 int (*resume)(struct ieee80211_hw *hw);
6d52563f2b Johannes Berg 2012-04-04 3739 void (*set_wakeup)(struct ieee80211_hw *hw, bool enabled);
eecc48000a Johannes Berg 2011-05-04 3740 #endif
75a5f0ccfd Johannes Berg 2007-09-18 3741 int (*add_interface)(struct ieee80211_hw *hw,
1ed32e4fc8 Johannes Berg 2009-12-23 3742 struct ieee80211_vif *vif);
34d4bc4d41 Johannes Berg 2010-08-27 3743 int (*change_interface)(struct ieee80211_hw *hw,
34d4bc4d41 Johannes Berg 2010-08-27 3744 struct ieee80211_vif *vif,
2ca27bcff7 Johannes Berg 2010-09-16 3745 enum nl80211_iftype new_type, bool p2p);
75a5f0ccfd Johannes Berg 2007-09-18 3746 void (*remove_interface)(struct ieee80211_hw *hw,
1ed32e4fc8 Johannes Berg 2009-12-23 3747 struct ieee80211_vif *vif);
e8975581f6 Johannes Berg 2008-10-09 3748 int (*config)(struct ieee80211_hw *hw, u32 changed);
471b3efdfc Johannes Berg 2007-12-28 3749 void (*bss_info_changed)(struct ieee80211_hw *hw,
471b3efdfc Johannes Berg 2007-12-28 3750 struct ieee80211_vif *vif,
471b3efdfc Johannes Berg 2007-12-28 3751 struct ieee80211_bss_conf *info,
471b3efdfc Johannes Berg 2007-12-28 3752 u32 changed);
b2abb6e2bc Johannes Berg 2011-07-19 3753
1041638f2b Johannes Berg 2012-10-19 3754 int (*start_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
1041638f2b Johannes Berg 2012-10-19 3755 void (*stop_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
1041638f2b Johannes Berg 2012-10-19 3756
3ac64beecd Johannes Berg 2009-08-17 3757 u64 (*prepare_multicast)(struct ieee80211_hw *hw,
22bedad3ce Jiri Pirko 2010-04-01 3758 struct netdev_hw_addr_list *mc_list);
75a5f0ccfd Johannes Berg 2007-09-18 3759 void (*configure_filter)(struct ieee80211_hw *hw,
75a5f0ccfd Johannes Berg 2007-09-18 3760 unsigned int changed_flags,
75a5f0ccfd Johannes Berg 2007-09-18 3761 unsigned int *total_flags,
3ac64beecd Johannes Berg 2009-08-17 3762 u64 multicast);
1b09b5568e Andrei Otcheretianski 2015-08-15 3763 void (*config_iface_filter)(struct ieee80211_hw *hw,
1b09b5568e Andrei Otcheretianski 2015-08-15 3764 struct ieee80211_vif *vif,
1b09b5568e Andrei Otcheretianski 2015-08-15 3765 unsigned int filter_flags,
1b09b5568e Andrei Otcheretianski 2015-08-15 3766 unsigned int changed_flags);
17741cdc26 Johannes Berg 2008-09-11 3767 int (*set_tim)(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
17741cdc26 Johannes Berg 2008-09-11 3768 bool set);
ea49c359f3 Johannes Berg 2007-09-18 3769 int (*set_key)(struct ieee80211_hw *hw, enum set_key_cmd cmd,
dc822b5db4 Johannes Berg 2008-12-29 3770 struct ieee80211_vif *vif, struct ieee80211_sta *sta,
11a843b7e1 Johannes Berg 2007-08-28 3771 struct ieee80211_key_conf *key);
9ae4fda332 Emmanuel Grumbach 2008-03-20 3772 void (*update_tkip_key)(struct ieee80211_hw *hw,
b3fbdcf49f Johannes Berg 2010-01-21 3773 struct ieee80211_vif *vif,
b3fbdcf49f Johannes Berg 2010-01-21 3774 struct ieee80211_key_conf *conf,
b3fbdcf49f Johannes Berg 2010-01-21 3775 struct ieee80211_sta *sta,
9ae4fda332 Emmanuel Grumbach 2008-03-20 3776 u32 iv32, u16 *phase1key);
c68f4b892c Johannes Berg 2011-07-05 3777 void (*set_rekey_data)(struct ieee80211_hw *hw,
c68f4b892c Johannes Berg 2011-07-05 3778 struct ieee80211_vif *vif,
c68f4b892c Johannes Berg 2011-07-05 3779 struct cfg80211_gtk_rekey_data *data);
de5fad8157 Yoni Divinsky 2012-05-30 3780 void (*set_default_unicast_key)(struct ieee80211_hw *hw,
de5fad8157 Yoni Divinsky 2012-05-30 3781 struct ieee80211_vif *vif, int idx);
a060bbfe4e Johannes Berg 2010-04-27 3782 int (*hw_scan)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
c56ef67250 David Spinadel 2014-02-05 3783 struct ieee80211_scan_request *req);
b856439b1b Eliad Peller 2011-06-13 3784 void (*cancel_hw_scan)(struct ieee80211_hw *hw,
b856439b1b Eliad Peller 2011-06-13 3785 struct ieee80211_vif *vif);
79f460ca49 Luciano Coelho 2011-05-11 3786 int (*sched_scan_start)(struct ieee80211_hw *hw,
79f460ca49 Luciano Coelho 2011-05-11 3787 struct ieee80211_vif *vif,
79f460ca49 Luciano Coelho 2011-05-11 3788 struct cfg80211_sched_scan_request *req,
633e271326 David Spinadel 2014-02-06 3789 struct ieee80211_scan_ies *ies);
37e3308cb2 Johannes Berg 2014-02-17 3790 int (*sched_scan_stop)(struct ieee80211_hw *hw,
79f460ca49 Luciano Coelho 2011-05-11 3791 struct ieee80211_vif *vif);
a344d6778a Johannes Berg 2014-06-12 3792 void (*sw_scan_start)(struct ieee80211_hw *hw,
a344d6778a Johannes Berg 2014-06-12 3793 struct ieee80211_vif *vif,
a344d6778a Johannes Berg 2014-06-12 3794 const u8 *mac_addr);
a344d6778a Johannes Berg 2014-06-12 3795 void (*sw_scan_complete)(struct ieee80211_hw *hw,
a344d6778a Johannes Berg 2014-06-12 3796 struct ieee80211_vif *vif);
f0706e828e Jiri Benc 2007-05-05 3797 int (*get_stats)(struct ieee80211_hw *hw,
f0706e828e Jiri Benc 2007-05-05 3798 struct ieee80211_low_level_stats *stats);
9352c19f63 Johannes Berg 2015-04-20 3799 void (*get_key_seq)(struct ieee80211_hw *hw,
9352c19f63 Johannes Berg 2015-04-20 3800 struct ieee80211_key_conf *key,
9352c19f63 Johannes Berg 2015-04-20 3801 struct ieee80211_key_seq *seq);
f23a478075 Arik Nemtsov 2010-11-08 3802 int (*set_frag_threshold)(struct ieee80211_hw *hw, u32 value);
f0706e828e Jiri Benc 2007-05-05 3803 int (*set_rts_threshold)(struct ieee80211_hw *hw, u32 value);
34e895075e Johannes Berg 2010-02-03 3804 int (*sta_add)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
34e895075e Johannes Berg 2010-02-03 3805 struct ieee80211_sta *sta);
34e895075e Johannes Berg 2010-02-03 3806 int (*sta_remove)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
34e895075e Johannes Berg 2010-02-03 3807 struct ieee80211_sta *sta);
77d2ece6fd Sujith Manoharan 2012-11-20 3808 #ifdef CONFIG_MAC80211_DEBUGFS
77d2ece6fd Sujith Manoharan 2012-11-20 3809 void (*sta_add_debugfs)(struct ieee80211_hw *hw,
77d2ece6fd Sujith Manoharan 2012-11-20 3810 struct ieee80211_vif *vif,
77d2ece6fd Sujith Manoharan 2012-11-20 3811 struct ieee80211_sta *sta,
77d2ece6fd Sujith Manoharan 2012-11-20 3812 struct dentry *dir);
77d2ece6fd Sujith Manoharan 2012-11-20 3813 #endif
32bfd35d4b Johannes Berg 2007-12-19 3814 void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
17741cdc26 Johannes Berg 2008-09-11 3815 enum sta_notify_cmd, struct ieee80211_sta *sta);
f6a144eae3 Ashok Raj Nagarajan 2019-03-29 3816 int (*sta_set_txpwr)(struct ieee80211_hw *hw,
f6a144eae3 Ashok Raj Nagarajan 2019-03-29 3817 struct ieee80211_vif *vif,
f6a144eae3 Ashok Raj Nagarajan 2019-03-29 3818 struct ieee80211_sta *sta);
f09603a259 Johannes Berg 2012-01-20 3819 int (*sta_state)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
f09603a259 Johannes Berg 2012-01-20 3820 struct ieee80211_sta *sta,
f09603a259 Johannes Berg 2012-01-20 3821 enum ieee80211_sta_state old_state,
f09603a259 Johannes Berg 2012-01-20 3822 enum ieee80211_sta_state new_state);
6a9d1b91f3 Johannes Berg 2013-12-04 3823 void (*sta_pre_rcu_remove)(struct ieee80211_hw *hw,
6a9d1b91f3 Johannes Berg 2013-12-04 3824 struct ieee80211_vif *vif,
6a9d1b91f3 Johannes Berg 2013-12-04 3825 struct ieee80211_sta *sta);
8f727ef3c4 Johannes Berg 2012-03-30 3826 void (*sta_rc_update)(struct ieee80211_hw *hw,
8f727ef3c4 Johannes Berg 2012-03-30 3827 struct ieee80211_vif *vif,
8f727ef3c4 Johannes Berg 2012-03-30 3828 struct ieee80211_sta *sta,
8f727ef3c4 Johannes Berg 2012-03-30 3829 u32 changed);
f815e2b3c0 Johannes Berg 2014-11-19 3830 void (*sta_rate_tbl_update)(struct ieee80211_hw *hw,
f815e2b3c0 Johannes Berg 2014-11-19 3831 struct ieee80211_vif *vif,
f815e2b3c0 Johannes Berg 2014-11-19 3832 struct ieee80211_sta *sta);
2b9a7e1bac Johannes Berg 2014-11-17 3833 void (*sta_statistics)(struct ieee80211_hw *hw,
2b9a7e1bac Johannes Berg 2014-11-17 3834 struct ieee80211_vif *vif,
2b9a7e1bac Johannes Berg 2014-11-17 3835 struct ieee80211_sta *sta,
2b9a7e1bac Johannes Berg 2014-11-17 3836 struct station_info *sinfo);
8a3a3c85e4 Eliad Peller 2011-10-02 3837 int (*conf_tx)(struct ieee80211_hw *hw,
a3304b0a17 Johannes Berg 2012-03-28 3838 struct ieee80211_vif *vif, u16 ac,
f0706e828e Jiri Benc 2007-05-05 3839 const struct ieee80211_tx_queue_params *params);
37a41b4aff Eliad Peller 2011-09-21 3840 u64 (*get_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
37a41b4aff Eliad Peller 2011-09-21 3841 void (*set_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
37a41b4aff Eliad Peller 2011-09-21 3842 u64 tsf);
354d381baf Pedersen, Thomas 2016-09-28 3843 void (*offset_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
354d381baf Pedersen, Thomas 2016-09-28 3844 s64 offset);
37a41b4aff Eliad Peller 2011-09-21 3845 void (*reset_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
f0706e828e Jiri Benc 2007-05-05 3846 int (*tx_last_beacon)(struct ieee80211_hw *hw);
57eeb2086d Johannes Berg 2017-01-13 3847
57eeb2086d Johannes Berg 2017-01-13 3848 /**
57eeb2086d Johannes Berg 2017-01-13 3849 * @ampdu_action:
57eeb2086d Johannes Berg 2017-01-13 3850 * Perform a certain A-MPDU action.
57eeb2086d Johannes Berg 2017-01-13 3851 * The RA/TID combination determines the destination and TID we want
57eeb2086d Johannes Berg 2017-01-13 3852 * the ampdu action to be performed for. The action is defined through
57eeb2086d Johannes Berg 2017-01-13 3853 * ieee80211_ampdu_mlme_action.
57eeb2086d Johannes Berg 2017-01-13 3854 * When the action is set to %IEEE80211_AMPDU_TX_OPERATIONAL the driver
57eeb2086d Johannes Berg 2017-01-13 3855 * may neither send aggregates containing more subframes than @buf_size
57eeb2086d Johannes Berg 2017-01-13 3856 * nor send aggregates in a way that lost frames would exceed the
57eeb2086d Johannes Berg 2017-01-13 3857 * buffer size. If just limiting the aggregate size, this would be
57eeb2086d Johannes Berg 2017-01-13 3858 * possible with a buf_size of 8:
57eeb2086d Johannes Berg 2017-01-13 3859 *
57eeb2086d Johannes Berg 2017-01-13 3860 * - ``TX: 1.....7``
57eeb2086d Johannes Berg 2017-01-13 3861 * - ``RX: 2....7`` (lost frame #1)
57eeb2086d Johannes Berg 2017-01-13 3862 * - ``TX: 8..1...``
57eeb2086d Johannes Berg 2017-01-13 3863 *
57eeb2086d Johannes Berg 2017-01-13 3864 * which is invalid since #1 was now re-transmitted well past the
57eeb2086d Johannes Berg 2017-01-13 3865 * buffer size of 8. Correct ways to retransmit #1 would be:
57eeb2086d Johannes Berg 2017-01-13 3866 *
57eeb2086d Johannes Berg 2017-01-13 3867 * - ``TX: 1 or``
57eeb2086d Johannes Berg 2017-01-13 3868 * - ``TX: 18 or``
57eeb2086d Johannes Berg 2017-01-13 3869 * - ``TX: 81``
57eeb2086d Johannes Berg 2017-01-13 3870 *
57eeb2086d Johannes Berg 2017-01-13 3871 * Even ``189`` would be wrong since 1 could be lost again.
57eeb2086d Johannes Berg 2017-01-13 3872 *
57eeb2086d Johannes Berg 2017-01-13 3873 * Returns a negative error code on failure.
57eeb2086d Johannes Berg 2017-01-13 3874 * The callback can sleep.
57eeb2086d Johannes Berg 2017-01-13 3875 */
1b7d03acbf Ron Rindjunsky 2007-12-25 3876 int (*ampdu_action)(struct ieee80211_hw *hw,
c951ad3550 Johannes Berg 2009-11-16 3877 struct ieee80211_vif *vif,
50ea05efaf Sara Sharon 2015-12-30 3878 struct ieee80211_ampdu_params *params);
1289723ef2 Holger Schurig 2010-04-19 3879 int (*get_survey)(struct ieee80211_hw *hw, int idx,
1289723ef2 Holger Schurig 2010-04-19 3880 struct survey_info *survey);
1f87f7d3a3 Johannes Berg 2009-06-02 3881 void (*rfkill_poll)(struct ieee80211_hw *hw);
a4bcaf5556 Lorenzo Bianconi 2014-09-04 3882 void (*set_coverage_class)(struct ieee80211_hw *hw, s16 coverage_class);
aff89a9b90 Johannes Berg 2009-07-01 3883 #ifdef CONFIG_NL80211_TESTMODE
52981cd794 David Spinadel 2013-07-31 3884 int (*testmode_cmd)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
52981cd794 David Spinadel 2013-07-31 3885 void *data, int len);
71063f0e89 Wey-Yi Guy 2011-05-20 3886 int (*testmode_dump)(struct ieee80211_hw *hw, struct sk_buff *skb,
71063f0e89 Wey-Yi Guy 2011-05-20 3887 struct netlink_callback *cb,
71063f0e89 Wey-Yi Guy 2011-05-20 3888 void *data, int len);
aff89a9b90 Johannes Berg 2009-07-01 3889 #endif
77be2c54c5 Emmanuel Grumbach 2014-03-27 3890 void (*flush)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
77be2c54c5 Emmanuel Grumbach 2014-03-27 3891 u32 queues, bool drop);
5ce6e438d5 Johannes Berg 2010-05-11 3892 void (*channel_switch)(struct ieee80211_hw *hw,
0f791eb47f Luciano Coelho 2014-10-08 3893 struct ieee80211_vif *vif,
5ce6e438d5 Johannes Berg 2010-05-11 3894 struct ieee80211_channel_switch *ch_switch);
15d9675321 Bruno Randolf 2010-11-10 3895 int (*set_antenna)(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant);
15d9675321 Bruno Randolf 2010-11-10 3896 int (*get_antenna)(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant);
21f8358964 Johannes Berg 2010-12-18 3897
21f8358964 Johannes Berg 2010-12-18 3898 int (*remain_on_channel)(struct ieee80211_hw *hw,
4988456862 Eliad Peller 2012-11-19 3899 struct ieee80211_vif *vif,
21f8358964 Johannes Berg 2010-12-18 3900 struct ieee80211_channel *chan,
d339d5ca8e Ilan Peer 2013-02-12 3901 int duration,
d339d5ca8e Ilan Peer 2013-02-12 3902 enum ieee80211_roc_type type);
21f8358964 Johannes Berg 2010-12-18 3903 int (*cancel_remain_on_channel)(struct ieee80211_hw *hw);
38c091590f John W. Linville 2011-03-07 3904 int (*set_ringparam)(struct ieee80211_hw *hw, u32 tx, u32 rx);
38c091590f John W. Linville 2011-03-07 3905 void (*get_ringparam)(struct ieee80211_hw *hw,
38c091590f John W. Linville 2011-03-07 3906 u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max);
e8306f9894 Vivek Natarajan 2011-04-06 3907 bool (*tx_frames_pending)(struct ieee80211_hw *hw);
bdbfd6b582 Sujith Manoharan 2011-04-27 3908 int (*set_bitrate_mask)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
bdbfd6b582 Sujith Manoharan 2011-04-27 3909 const struct cfg80211_bitrate_mask *mask);
a818292952 Emmanuel Grumbach 2015-03-16 3910 void (*event_callback)(struct ieee80211_hw *hw,
887da9176e Emmanuel Grumbach 2013-01-20 3911 struct ieee80211_vif *vif,
a818292952 Emmanuel Grumbach 2015-03-16 3912 const struct ieee80211_event *event);
4049e09acd Johannes Berg 2011-09-29 3913
40b9640883 Johannes Berg 2011-09-29 3914 void (*allow_buffered_frames)(struct ieee80211_hw *hw,
40b9640883 Johannes Berg 2011-09-29 3915 struct ieee80211_sta *sta,
40b9640883 Johannes Berg 2011-09-29 3916 u16 tids, int num_frames,
40b9640883 Johannes Berg 2011-09-29 3917 enum ieee80211_frame_release_type reason,
40b9640883 Johannes Berg 2011-09-29 3918 bool more_data);
4049e09acd Johannes Berg 2011-09-29 3919 void (*release_buffered_frames)(struct ieee80211_hw *hw,
4049e09acd Johannes Berg 2011-09-29 3920 struct ieee80211_sta *sta,
4049e09acd Johannes Berg 2011-09-29 3921 u16 tids, int num_frames,
4049e09acd Johannes Berg 2011-09-29 3922 enum ieee80211_frame_release_type reason,
4049e09acd Johannes Berg 2011-09-29 3923 bool more_data);
e352114fd6 Ben Greear 2012-04-23 3924
e352114fd6 Ben Greear 2012-04-23 3925 int (*get_et_sset_count)(struct ieee80211_hw *hw,
e352114fd6 Ben Greear 2012-04-23 3926 struct ieee80211_vif *vif, int sset);
e352114fd6 Ben Greear 2012-04-23 3927 void (*get_et_stats)(struct ieee80211_hw *hw,
e352114fd6 Ben Greear 2012-04-23 3928 struct ieee80211_vif *vif,
e352114fd6 Ben Greear 2012-04-23 3929 struct ethtool_stats *stats, u64 *data);
e352114fd6 Ben Greear 2012-04-23 3930 void (*get_et_strings)(struct ieee80211_hw *hw,
e352114fd6 Ben Greear 2012-04-23 3931 struct ieee80211_vif *vif,
e352114fd6 Ben Greear 2012-04-23 3932 u32 sset, u8 *data);
a1845fc7c5 Johannes Berg 2012-06-27 3933
a1845fc7c5 Johannes Berg 2012-06-27 3934 void (*mgd_prepare_tx)(struct ieee80211_hw *hw,
d4e36e5554 Ilan Peer 2018-04-20 3935 struct ieee80211_vif *vif,
d4e36e5554 Ilan Peer 2018-04-20 3936 u16 duration);
c3645eac47 Michal Kazior 2012-06-26 3937
ee10f2c779 Arik Nemtsov 2014-06-11 3938 void (*mgd_protect_tdls_discover)(struct ieee80211_hw *hw,
ee10f2c779 Arik Nemtsov 2014-06-11 3939 struct ieee80211_vif *vif);
ee10f2c779 Arik Nemtsov 2014-06-11 3940
c3645eac47 Michal Kazior 2012-06-26 3941 int (*add_chanctx)(struct ieee80211_hw *hw,
c3645eac47 Michal Kazior 2012-06-26 3942 struct ieee80211_chanctx_conf *ctx);
c3645eac47 Michal Kazior 2012-06-26 3943 void (*remove_chanctx)(struct ieee80211_hw *hw,
c3645eac47 Michal Kazior 2012-06-26 3944 struct ieee80211_chanctx_conf *ctx);
c3645eac47 Michal Kazior 2012-06-26 3945 void (*change_chanctx)(struct ieee80211_hw *hw,
c3645eac47 Michal Kazior 2012-06-26 3946 struct ieee80211_chanctx_conf *ctx,
c3645eac47 Michal Kazior 2012-06-26 3947 u32 changed);
c3645eac47 Michal Kazior 2012-06-26 3948 int (*assign_vif_chanctx)(struct ieee80211_hw *hw,
c3645eac47 Michal Kazior 2012-06-26 3949 struct ieee80211_vif *vif,
c3645eac47 Michal Kazior 2012-06-26 3950 struct ieee80211_chanctx_conf *ctx);
c3645eac47 Michal Kazior 2012-06-26 3951 void (*unassign_vif_chanctx)(struct ieee80211_hw *hw,
c3645eac47 Michal Kazior 2012-06-26 3952 struct ieee80211_vif *vif,
c3645eac47 Michal Kazior 2012-06-26 3953 struct ieee80211_chanctx_conf *ctx);
1a5f0c13d1 Luciano Coelho 2014-05-23 3954 int (*switch_vif_chanctx)(struct ieee80211_hw *hw,
1a5f0c13d1 Luciano Coelho 2014-05-23 3955 struct ieee80211_vif_chanctx_switch *vifs,
1a5f0c13d1 Luciano Coelho 2014-05-23 3956 int n_vifs,
1a5f0c13d1 Luciano Coelho 2014-05-23 3957 enum ieee80211_chanctx_switch_mode mode);
9214ad7f9a Johannes Berg 2012-11-06 3958
cf2c92d840 Eliad Peller 2014-11-04 3959 void (*reconfig_complete)(struct ieee80211_hw *hw,
cf2c92d840 Eliad Peller 2014-11-04 3960 enum ieee80211_reconfig_type reconfig_type);
a65240c101 Johannes Berg 2013-01-14 3961
a65240c101 Johannes Berg 2013-01-14 3962 #if IS_ENABLED(CONFIG_IPV6)
a65240c101 Johannes Berg 2013-01-14 3963 void (*ipv6_addr_change)(struct ieee80211_hw *hw,
a65240c101 Johannes Berg 2013-01-14 3964 struct ieee80211_vif *vif,
a65240c101 Johannes Berg 2013-01-14 3965 struct inet6_dev *idev);
a65240c101 Johannes Berg 2013-01-14 3966 #endif
73da7d5bab Simon Wunderlich 2013-07-11 3967 void (*channel_switch_beacon)(struct ieee80211_hw *hw,
73da7d5bab Simon Wunderlich 2013-07-11 3968 struct ieee80211_vif *vif,
73da7d5bab Simon Wunderlich 2013-07-11 3969 struct cfg80211_chan_def *chandef);
6d027bcc8a Luciano Coelho 2014-10-08 3970 int (*pre_channel_switch)(struct ieee80211_hw *hw,
6d027bcc8a Luciano Coelho 2014-10-08 3971 struct ieee80211_vif *vif,
6d027bcc8a Luciano Coelho 2014-10-08 3972 struct ieee80211_channel_switch *ch_switch);
55fff50113 Johannes Berg 2013-08-19 3973
f1d65583bc Luciano Coelho 2014-10-08 3974 int (*post_channel_switch)(struct ieee80211_hw *hw,
f1d65583bc Luciano Coelho 2014-10-08 3975 struct ieee80211_vif *vif);
b9cc81d827 Sara Sharon 2019-02-06 3976 void (*abort_channel_switch)(struct ieee80211_hw *hw,
b9cc81d827 Sara Sharon 2019-02-06 3977 struct ieee80211_vif *vif);
fafd2bce5a Sara Sharon 2019-02-06 3978 void (*channel_switch_rx_beacon)(struct ieee80211_hw *hw,
fafd2bce5a Sara Sharon 2019-02-06 3979 struct ieee80211_vif *vif,
fafd2bce5a Sara Sharon 2019-02-06 3980 struct ieee80211_channel_switch *ch_switch);
f1d65583bc Luciano Coelho 2014-10-08 3981
55fff50113 Johannes Berg 2013-08-19 3982 int (*join_ibss)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
55fff50113 Johannes Berg 2013-08-19 3983 void (*leave_ibss)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
2439ca0402 Maxim Altshul 2016-08-04 3984 u32 (*get_expected_throughput)(struct ieee80211_hw *hw,
2439ca0402 Maxim Altshul 2016-08-04 3985 struct ieee80211_sta *sta);
5b3dc42b1b Felix Fietkau 2014-10-26 3986 int (*get_txpower)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
5b3dc42b1b Felix Fietkau 2014-10-26 3987 int *dbm);
a7a6bdd067 Arik Nemtsov 2014-11-09 3988
a7a6bdd067 Arik Nemtsov 2014-11-09 3989 int (*tdls_channel_switch)(struct ieee80211_hw *hw,
a7a6bdd067 Arik Nemtsov 2014-11-09 3990 struct ieee80211_vif *vif,
a7a6bdd067 Arik Nemtsov 2014-11-09 3991 struct ieee80211_sta *sta, u8 oper_class,
a7a6bdd067 Arik Nemtsov 2014-11-09 3992 struct cfg80211_chan_def *chandef,
8a4d32f30d Arik Nemtsov 2014-11-09 3993 struct sk_buff *tmpl_skb, u32 ch_sw_tm_ie);
a7a6bdd067 Arik Nemtsov 2014-11-09 3994 void (*tdls_cancel_channel_switch)(struct ieee80211_hw *hw,
a7a6bdd067 Arik Nemtsov 2014-11-09 3995 struct ieee80211_vif *vif,
a7a6bdd067 Arik Nemtsov 2014-11-09 3996 struct ieee80211_sta *sta);
8a4d32f30d Arik Nemtsov 2014-11-09 3997 void (*tdls_recv_channel_switch)(struct ieee80211_hw *hw,
8a4d32f30d Arik Nemtsov 2014-11-09 3998 struct ieee80211_vif *vif,
8a4d32f30d Arik Nemtsov 2014-11-09 3999 struct ieee80211_tdls_ch_sw_params *params);
ba8c3d6f16 Felix Fietkau 2015-03-27 4000
e7881bd594 Johannes Berg 2017-12-19 4001 void (*wake_tx_queue)(struct ieee80211_hw *hw,
e7881bd594 Johannes Berg 2017-12-19 4002 struct ieee80211_txq *txq);
f59374eb42 Sara Sharon 2016-03-02 4003 void (*sync_rx_queues)(struct ieee80211_hw *hw);
708d50edb1 Ayala Beker 2016-09-20 4004
708d50edb1 Ayala Beker 2016-09-20 4005 int (*start_nan)(struct ieee80211_hw *hw,
708d50edb1 Ayala Beker 2016-09-20 4006 struct ieee80211_vif *vif,
708d50edb1 Ayala Beker 2016-09-20 4007 struct cfg80211_nan_conf *conf);
708d50edb1 Ayala Beker 2016-09-20 4008 int (*stop_nan)(struct ieee80211_hw *hw,
708d50edb1 Ayala Beker 2016-09-20 4009 struct ieee80211_vif *vif);
5953ff6d6a Ayala Beker 2016-09-20 4010 int (*nan_change_conf)(struct ieee80211_hw *hw,
5953ff6d6a Ayala Beker 2016-09-20 4011 struct ieee80211_vif *vif,
5953ff6d6a Ayala Beker 2016-09-20 4012 struct cfg80211_nan_conf *conf, u32 changes);
167e33f4f6 Ayala Beker 2016-09-20 4013 int (*add_nan_func)(struct ieee80211_hw *hw,
167e33f4f6 Ayala Beker 2016-09-20 4014 struct ieee80211_vif *vif,
167e33f4f6 Ayala Beker 2016-09-20 4015 const struct cfg80211_nan_func *nan_func);
167e33f4f6 Ayala Beker 2016-09-20 4016 void (*del_nan_func)(struct ieee80211_hw *hw,
167e33f4f6 Ayala Beker 2016-09-20 4017 struct ieee80211_vif *vif,
167e33f4f6 Ayala Beker 2016-09-20 4018 u8 instance_id);
9739fe29a2 Sara Sharon 2018-09-05 4019 bool (*can_aggregate_in_amsdu)(struct ieee80211_hw *hw,
9739fe29a2 Sara Sharon 2018-09-05 4020 struct sk_buff *head,
9739fe29a2 Sara Sharon 2018-09-05 4021 struct sk_buff *skb);
bc847970f4 Pradeep Kumar Chitrapu 2018-10-03 4022 int (*get_ftm_responder_stats)(struct ieee80211_hw *hw,
bc847970f4 Pradeep Kumar Chitrapu 2018-10-03 4023 struct ieee80211_vif *vif,
bc847970f4 Pradeep Kumar Chitrapu 2018-10-03 4024 struct cfg80211_ftm_responder_stats *ftm_stats);
cee7013be9 Johannes Berg 2018-10-16 4025 int (*start_pmsr)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
cee7013be9 Johannes Berg 2018-10-16 4026 struct cfg80211_pmsr_request *request);
cee7013be9 Johannes Berg 2018-10-16 4027 void (*abort_pmsr)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
cee7013be9 Johannes Berg 2018-10-16 4028 struct cfg80211_pmsr_request *request);
f0706e828e Jiri Benc 2007-05-05 @4029 };
f0706e828e Jiri Benc 2007-05-05 4030
:::::: The code at line 4029 was first introduced by commit
:::::: f0706e828e96d0fa4e80c0d25aa98523f6d589a0 [MAC80211]: Add mac80211 wireless stack.
:::::: TO: Jiri Benc <jbenc@suse.cz>
:::::: CC: David S. Miller <davem@davemloft.net>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 6589 bytes --]
next prev parent reply other threads:[~2019-03-31 7:22 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-29 10:49 [PATCH v4 2/3] mac80211: store tx power value from user to station Balaji Pothunoori
2019-03-29 10:49 ` Balaji Pothunoori
2019-03-31 7:22 ` kbuild test robot [this message]
2019-03-31 7:22 ` kbuild test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201903311552.TtxO16s6%lkp@intel.com \
--to=lkp@intel.com \
--cc=arnagara@codeaurora.org \
--cc=ath10k@lists.infradead.org \
--cc=bpothuno@codeaurora.org \
--cc=johannes@sipsolutions.net \
--cc=kbuild-all@01.org \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.