Message ID | 1548844520-13752-1-git-send-email-bpothuno@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2,1/3] cfg80211: Add support to set tx power for a station associated | expand |
Hi Ashok, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on mac80211-next/master] [also build test WARNING on next-20190130] [cannot apply to v5.0-rc4] [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/20190130-192343 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/interrupt.h:268: warning: Function parameter or member 'is_managed' not described in 'irq_affinity_desc' 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:4737: warning: Function parameter or member 'wext.ibss' not described in 'wireless_dev' include/net/cfg80211.h:4737: warning: Function parameter or member 'wext.connect' not described in 'wireless_dev' include/net/cfg80211.h:4737: warning: Function parameter or member 'wext.keys' not described in 'wireless_dev' include/net/cfg80211.h:4737: warning: Function parameter or member 'wext.ie' not described in 'wireless_dev' include/net/cfg80211.h:4737: warning: Function parameter or member 'wext.ie_len' not described in 'wireless_dev' include/net/cfg80211.h:4737: warning: Function parameter or member 'wext.bssid' not described in 'wireless_dev' include/net/cfg80211.h:4737: warning: Function parameter or member 'wext.ssid' not described in 'wireless_dev' include/net/cfg80211.h:4737: warning: Function parameter or member 'wext.default_key' not described in 'wireless_dev' include/net/cfg80211.h:4737: warning: Function parameter or member 'wext.default_mgmt_key' not described in 'wireless_dev' include/net/cfg80211.h:4737: warning: Function parameter or member 'wext.prev_bssid_valid' not described in 'wireless_dev' include/net/cfg80211.h:1064: warning: Function parameter or member 'txpwr' not described in 'station_parameters' include/net/cfg80211.h:1064: warning: Function parameter or member 'txpwr.power' not described in 'station_parameters' include/net/cfg80211.h:1064: warning: Function parameter or member 'txpwr.type' not described in 'station_parameters' include/net/cfg80211.h:1471: warning: Enum value 'MPATH_INFO_PATH_CHANGE' not described in enum 'mpath_info_flags' include/net/mac80211.h:2418: warning: Function parameter or member 'radiotap_timestamp.units_pos' not described in 'ieee80211_hw' include/net/mac80211.h:2418: warning: Function parameter or member 'radiotap_timestamp.accuracy' not described in 'ieee80211_hw' include/net/mac80211.h:2418: warning: Function parameter or member 'weight_multiplier' not described in 'ieee80211_hw' >> include/net/mac80211.h:3957: warning: Function parameter or member 'sta_set_txpwr' not described in 'ieee80211_ops' include/net/mac80211.h:1010: warning: Function parameter or member 'control.rates' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'control.rts_cts_rate_idx' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'control.use_rts' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'control.use_cts_prot' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'control.short_preamble' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'control.skip_table' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'control.jiffies' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'control.vif' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'control.hw_key' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'control.flags' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'control.enqueue_time' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'ack' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'ack.cookie' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'status.rates' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'status.ack_signal' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'status.ampdu_ack_len' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'status.ampdu_len' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'status.antenna' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'status.tx_time' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'status.is_valid_ack_signal' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'status.status_driver_data' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'driver_rates' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'pad' not described in 'ieee80211_tx_info' include/net/mac80211.h:1010: warning: Function parameter or member 'rate_driver_data' not described in 'ieee80211_tx_info' >> include/net/mac80211.h:1947: warning: Function parameter or member 'txpwr' not described in 'ieee80211_sta' >> include/net/mac80211.h:1947: warning: Function parameter or member 'txpwr.power' not described in 'ieee80211_sta' >> include/net/mac80211.h:1947: warning: Function parameter or member 'txpwr.type' not described in 'ieee80211_sta' net/mac80211/sta_info.h:607: warning: Function parameter or member 'rx_stats_avg' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'rx_stats_avg.signal' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'rx_stats_avg.chain_signal' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'status_stats.filtered' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'status_stats.retry_failed' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'status_stats.retry_count' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'status_stats.lost_packets' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'status_stats.last_tdls_pkt_time' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'status_stats.msdu_retries' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'status_stats.msdu_failed' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'status_stats.last_ack' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'status_stats.last_ack_signal' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'status_stats.ack_signal_filled' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'status_stats.avg_ack_signal' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'tx_stats.packets' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'tx_stats.bytes' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'tx_stats.last_rate' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'tx_stats.msdu' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'airtime' not described in 'sta_info' net/mac80211/sta_info.h:607: warning: Function parameter or member 'airtime_weight' not described in 'sta_info' 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' drivers/mtd/nand/raw/nand_base.c:420: warning: Function parameter or member 'chip' not described in 'nand_fill_oob' drivers/mtd/nand/raw/nand_bbt.c:173: warning: Function parameter or member 'this' not described in 'read_bbt' drivers/mtd/nand/raw/nand_bbt.c:173: warning: Excess function parameter 'chip' description in 'read_bbt' 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:845: warning: Function parameter or member 'level' not described in 'amdgpu_vm_bo_param' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1350: warning: Function parameter or member 'params' not described in 'amdgpu_vm_update_func' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1350: warning: Function parameter or member 'bo' not described in 'amdgpu_vm_update_func' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1350: warning: Function parameter or member 'pe' not described in 'amdgpu_vm_update_func' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1350: warning: Function parameter or member 'addr' not described in 'amdgpu_vm_update_func' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1350: warning: Function parameter or member 'count' not described in 'amdgpu_vm_update_func' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1350: warning: Function parameter or member 'incr' not described in 'amdgpu_vm_update_func' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1350: warning: Function parameter or member 'flags' not described in 'amdgpu_vm_update_func' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1517: warning: Function parameter or member 'params' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1517: warning: Function parameter or member 'bo' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1517: warning: Function parameter or member 'level' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1517: warning: Function parameter or member 'pe' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1517: warning: Function parameter or member 'addr' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1517: warning: Function parameter or member 'count' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1517: warning: Function parameter or member 'incr' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1517: warning: Function parameter or member 'flags' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:3093: 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' vim +3957 include/net/mac80211.h cf2c92d840 Eliad Peller 2014-11-04 3126 cf2c92d840 Eliad Peller 2014-11-04 3127 /** 75a5f0ccfd Johannes Berg 2007-09-18 3128 * struct ieee80211_ops - callbacks from mac80211 to the driver 75a5f0ccfd Johannes Berg 2007-09-18 3129 * 75a5f0ccfd Johannes Berg 2007-09-18 3130 * This structure contains various callbacks that the driver may 75a5f0ccfd Johannes Berg 2007-09-18 3131 * handle or, in some cases, must handle, for example to configure 75a5f0ccfd Johannes Berg 2007-09-18 3132 * the hardware to a new channel or to transmit a frame. 75a5f0ccfd Johannes Berg 2007-09-18 3133 * 75a5f0ccfd Johannes Berg 2007-09-18 3134 * @tx: Handler that 802.11 module calls for each transmitted frame. f0706e828e Jiri Benc 2007-05-05 3135 * skb contains the buffer starting from the IEEE 802.11 header. f0706e828e Jiri Benc 2007-05-05 3136 * The low-level driver should send the frame out based on eefce91a38 Johannes Berg 2008-05-17 3137 * configuration in the TX control data. This handler should, 11127e9121 Johannes Berg 2011-11-16 3138 * preferably, never fail and stop queues appropriately. 11127e9121 Johannes Berg 2011-11-16 3139 * Must be atomic. 75a5f0ccfd Johannes Berg 2007-09-18 3140 * 75a5f0ccfd Johannes Berg 2007-09-18 3141 * @start: Called before the first netdevice attached to the hardware 4150c57212 Johannes Berg 2007-09-17 3142 * is enabled. This should turn on the hardware and must turn on 4150c57212 Johannes Berg 2007-09-17 3143 * frame reception (for possibly enabled monitor interfaces.) 4150c57212 Johannes Berg 2007-09-17 3144 * Returns negative error codes, these may be seen in userspace, 4150c57212 Johannes Berg 2007-09-17 3145 * or zero. 4150c57212 Johannes Berg 2007-09-17 3146 * When the device is started it should not have a MAC address 4150c57212 Johannes Berg 2007-09-17 3147 * to avoid acknowledging frames before a non-monitor device 4150c57212 Johannes Berg 2007-09-17 3148 * is added. e1781ed33a Kalle Valo 2009-12-23 3149 * Must be implemented and can sleep. 75a5f0ccfd Johannes Berg 2007-09-18 3150 * 75a5f0ccfd Johannes Berg 2007-09-18 3151 * @stop: Called after last netdevice attached to the hardware 4150c57212 Johannes Berg 2007-09-17 3152 * is disabled. This should turn off the hardware (at least 4150c57212 Johannes Berg 2007-09-17 3153 * it must turn off frame reception.) 4150c57212 Johannes Berg 2007-09-17 3154 * May be called right after add_interface if that rejects 42935ecaf4 Luis R. Rodriguez 2009-07-29 3155 * an interface. If you added any work onto the mac80211 workqueue 42935ecaf4 Luis R. Rodriguez 2009-07-29 3156 * you should ensure to cancel it on this callback. e1781ed33a Kalle Valo 2009-12-23 3157 * Must be implemented and can sleep. 75a5f0ccfd Johannes Berg 2007-09-18 3158 * eecc48000a Johannes Berg 2011-05-04 3159 * @suspend: Suspend the device; mac80211 itself will quiesce before and eecc48000a Johannes Berg 2011-05-04 3160 * stop transmitting and doing any other configuration, and then eecc48000a Johannes Berg 2011-05-04 3161 * ask the device to suspend. This is only invoked when WoWLAN is eecc48000a Johannes Berg 2011-05-04 3162 * configured, otherwise the device is deconfigured completely and eecc48000a Johannes Berg 2011-05-04 3163 * reconfigured at resume time. 2b4562dfd6 Johannes Berg 2011-07-02 3164 * The driver may also impose special conditions under which it 2b4562dfd6 Johannes Berg 2011-07-02 3165 * wants to use the "normal" suspend (deconfigure), say if it only 2b4562dfd6 Johannes Berg 2011-07-02 3166 * supports WoWLAN when the device is associated. In this case, it 2b4562dfd6 Johannes Berg 2011-07-02 3167 * must return 1 from this function. eecc48000a Johannes Berg 2011-05-04 3168 * eecc48000a Johannes Berg 2011-05-04 3169 * @resume: If WoWLAN was configured, this indicates that mac80211 is eecc48000a Johannes Berg 2011-05-04 3170 * now resuming its operation, after this the device must be fully eecc48000a Johannes Berg 2011-05-04 3171 * functional again. If this returns an error, the only way out is eecc48000a Johannes Berg 2011-05-04 3172 * to also unregister the device. If it returns 1, then mac80211 eecc48000a Johannes Berg 2011-05-04 3173 * will also go through the regular complete restart on resume. eecc48000a Johannes Berg 2011-05-04 3174 * d13e141481 Johannes Berg 2012-06-09 3175 * @set_wakeup: Enable or disable wakeup when WoWLAN configuration is d13e141481 Johannes Berg 2012-06-09 3176 * modified. The reason is that device_set_wakeup_enable() is d13e141481 Johannes Berg 2012-06-09 3177 * supposed to be called when the configuration changes, not only d13e141481 Johannes Berg 2012-06-09 3178 * in suspend(). d13e141481 Johannes Berg 2012-06-09 3179 * 75a5f0ccfd Johannes Berg 2007-09-18 3180 * @add_interface: Called when a netdevice attached to the hardware is e37d4dffdf Bob Copeland 2008-10-20 3181 * enabled. Because it is not called for monitor mode devices, @start 75a5f0ccfd Johannes Berg 2007-09-18 3182 * and @stop must be implemented. 4150c57212 Johannes Berg 2007-09-17 3183 * The driver should perform any initialization it needs before 4150c57212 Johannes Berg 2007-09-17 3184 * the device can be enabled. The initial configuration for the 4150c57212 Johannes Berg 2007-09-17 3185 * interface is given in the conf parameter. 75a5f0ccfd Johannes Berg 2007-09-18 3186 * The callback may refuse to add an interface by returning a 75a5f0ccfd Johannes Berg 2007-09-18 3187 * negative error code (which will be seen in userspace.) e1781ed33a Kalle Valo 2009-12-23 3188 * Must be implemented and can sleep. 75a5f0ccfd Johannes Berg 2007-09-18 3189 * 34d4bc4d41 Johannes Berg 2010-08-27 3190 * @change_interface: Called when a netdevice changes type. This callback 34d4bc4d41 Johannes Berg 2010-08-27 3191 * is optional, but only if it is supported can interface types be 34d4bc4d41 Johannes Berg 2010-08-27 3192 * switched while the interface is UP. The callback may sleep. 34d4bc4d41 Johannes Berg 2010-08-27 3193 * Note that while an interface is being switched, it will not be 34d4bc4d41 Johannes Berg 2010-08-27 3194 * found by the interface iteration callbacks. 34d4bc4d41 Johannes Berg 2010-08-27 3195 * 75a5f0ccfd Johannes Berg 2007-09-18 3196 * @remove_interface: Notifies a driver that an interface is going down. 75a5f0ccfd Johannes Berg 2007-09-18 3197 * The @stop callback is called after this if it is the last interface 75a5f0ccfd Johannes Berg 2007-09-18 3198 * and no monitor interfaces are present. 4150c57212 Johannes Berg 2007-09-17 3199 * When all interfaces are removed, the MAC address in the hardware 4150c57212 Johannes Berg 2007-09-17 3200 * must be cleared so the device no longer acknowledges packets, 4150c57212 Johannes Berg 2007-09-17 3201 * the mac_addr member of the conf structure is, however, set to the 4150c57212 Johannes Berg 2007-09-17 3202 * MAC address of the device going away. e1781ed33a Kalle Valo 2009-12-23 3203 * Hence, this callback must be implemented. It can sleep. 4150c57212 Johannes Berg 2007-09-17 3204 * 75a5f0ccfd Johannes Berg 2007-09-18 3205 * @config: Handler for configuration requests. IEEE 802.11 code calls this 75a5f0ccfd Johannes Berg 2007-09-18 3206 * function to change hardware configuration, e.g., channel. 6dd1bf3118 Bob Copeland 2009-01-08 3207 * This function should never fail but returns a negative error code e1781ed33a Kalle Valo 2009-12-23 3208 * if it does. The callback can sleep. 4150c57212 Johannes Berg 2007-09-17 3209 * 471b3efdfc Johannes Berg 2007-12-28 3210 * @bss_info_changed: Handler for configuration requests related to BSS 471b3efdfc Johannes Berg 2007-12-28 3211 * parameters that may vary during BSS's lifespan, and may affect low 471b3efdfc Johannes Berg 2007-12-28 3212 * level driver (e.g. assoc/disassoc status, erp parameters). 471b3efdfc Johannes Berg 2007-12-28 3213 * This function should not be used if no BSS has been set, unless 471b3efdfc Johannes Berg 2007-12-28 3214 * for association indication. The @changed parameter indicates which e1781ed33a Kalle Valo 2009-12-23 3215 * of the bss parameters has changed when a call is made. The callback e1781ed33a Kalle Valo 2009-12-23 3216 * can sleep. 471b3efdfc Johannes Berg 2007-12-28 3217 * 3ac64beecd Johannes Berg 2009-08-17 3218 * @prepare_multicast: Prepare for multicast filter configuration. 3ac64beecd Johannes Berg 2009-08-17 3219 * This callback is optional, and its return value is passed 3ac64beecd Johannes Berg 2009-08-17 3220 * to configure_filter(). This callback must be atomic. 3ac64beecd Johannes Berg 2009-08-17 3221 * 75a5f0ccfd Johannes Berg 2007-09-18 3222 * @configure_filter: Configure the device's RX filter. 75a5f0ccfd Johannes Berg 2007-09-18 3223 * See the section "Frame filtering" for more information. e1781ed33a Kalle Valo 2009-12-23 3224 * This callback must be implemented and can sleep. 8f20fc2498 Johannes Berg 2007-08-28 3225 * 1b09b5568e Andrei Otcheretianski 2015-08-15 3226 * @config_iface_filter: Configure the interface's RX filter. 1b09b5568e Andrei Otcheretianski 2015-08-15 3227 * This callback is optional and is used to configure which frames 1b09b5568e Andrei Otcheretianski 2015-08-15 3228 * should be passed to mac80211. The filter_flags is the combination 1b09b5568e Andrei Otcheretianski 2015-08-15 3229 * of FIF_* flags. The changed_flags is a bit mask that indicates 1b09b5568e Andrei Otcheretianski 2015-08-15 3230 * which flags are changed. 1b09b5568e Andrei Otcheretianski 2015-08-15 3231 * This callback can sleep. 1b09b5568e Andrei Otcheretianski 2015-08-15 3232 * 546c80c91f Luis R. Rodriguez 2008-08-14 3233 * @set_tim: Set TIM bit. mac80211 calls this function when a TIM bit 17741cdc26 Johannes Berg 2008-09-11 3234 * must be set or cleared for a given STA. Must be atomic. 11a843b7e1 Johannes Berg 2007-08-28 3235 * 75a5f0ccfd Johannes Berg 2007-09-18 3236 * @set_key: See the section "Hardware crypto acceleration" e1781ed33a Kalle Valo 2009-12-23 3237 * This callback is only called between add_interface and e1781ed33a Kalle Valo 2009-12-23 3238 * remove_interface calls, i.e. while the given virtual interface dc822b5db4 Johannes Berg 2008-12-29 3239 * is enabled. 6dd1bf3118 Bob Copeland 2009-01-08 3240 * Returns a negative error code if the key can't be added. e1781ed33a Kalle Valo 2009-12-23 3241 * The callback can sleep. 11a843b7e1 Johannes Berg 2007-08-28 3242 * 9ae4fda332 Emmanuel Grumbach 2008-03-20 3243 * @update_tkip_key: See the section "Hardware crypto acceleration" 9ae4fda332 Emmanuel Grumbach 2008-03-20 3244 * This callback will be called in the context of Rx. Called for drivers 9ae4fda332 Emmanuel Grumbach 2008-03-20 3245 * which set IEEE80211_KEY_FLAG_TKIP_REQ_RX_P1_KEY. eb807fb238 Kalle Valo 2010-01-24 3246 * The callback must be atomic. 9ae4fda332 Emmanuel Grumbach 2008-03-20 3247 * c68f4b892c Johannes Berg 2011-07-05 3248 * @set_rekey_data: If the device supports GTK rekeying, for example while the c68f4b892c Johannes Berg 2011-07-05 3249 * host is suspended, it can assign this callback to retrieve the data c68f4b892c Johannes Berg 2011-07-05 3250 * necessary to do GTK rekeying, this is the KEK, KCK and replay counter. c68f4b892c Johannes Berg 2011-07-05 3251 * After rekeying was done it should (for example during resume) notify c68f4b892c Johannes Berg 2011-07-05 3252 * userspace of the new replay counter using ieee80211_gtk_rekey_notify(). c68f4b892c Johannes Berg 2011-07-05 3253 * de5fad8157 Yoni Divinsky 2012-05-30 3254 * @set_default_unicast_key: Set the default (unicast) key index, useful for de5fad8157 Yoni Divinsky 2012-05-30 3255 * WEP when the device sends data packets autonomously, e.g. for ARP de5fad8157 Yoni Divinsky 2012-05-30 3256 * offloading. The index can be 0-3, or -1 for unsetting it. de5fad8157 Yoni Divinsky 2012-05-30 3257 * 75a5f0ccfd Johannes Berg 2007-09-18 3258 * @hw_scan: Ask the hardware to service the scan request, no need to start 8318d78a44 Johannes Berg 2008-01-24 3259 * the scan state machine in stack. The scan must honour the channel 9050bdd858 Kalle Valo 2009-03-22 3260 * configuration done by the regulatory agent in the wiphy's 9050bdd858 Kalle Valo 2009-03-22 3261 * registered bands. The hardware (or the driver) needs to make sure de95a54b1a Johannes Berg 2009-04-01 3262 * that power save is disabled. de95a54b1a Johannes Berg 2009-04-01 3263 * The @req ie/ie_len members are rewritten by mac80211 to contain the de95a54b1a Johannes Berg 2009-04-01 3264 * entire IEs after the SSID, so that drivers need not look at these de95a54b1a Johannes Berg 2009-04-01 3265 * at all but just send them after the SSID -- mac80211 includes the de95a54b1a Johannes Berg 2009-04-01 3266 * (extended) supported rates and HT information (where applicable). de95a54b1a Johannes Berg 2009-04-01 3267 * When the scan finishes, ieee80211_scan_completed() must be called; de95a54b1a Johannes Berg 2009-04-01 3268 * note that it also must be called when the scan cannot finish due to de95a54b1a Johannes Berg 2009-04-01 3269 * any error unless this callback returned a negative error code. e9da68ddea Johannes Berg 2018-10-18 3270 * This callback is also allowed to return the special return value 1, e9da68ddea Johannes Berg 2018-10-18 3271 * this indicates that hardware scan isn't desirable right now and a e9da68ddea Johannes Berg 2018-10-18 3272 * software scan should be done instead. A driver wishing to use this e9da68ddea Johannes Berg 2018-10-18 3273 * capability must ensure its (hardware) scan capabilities aren't e9da68ddea Johannes Berg 2018-10-18 3274 * advertised as more capable than mac80211's software scan is. e1781ed33a Kalle Valo 2009-12-23 3275 * The callback can sleep. 11a843b7e1 Johannes Berg 2007-08-28 3276 * b856439b1b Eliad Peller 2011-06-13 3277 * @cancel_hw_scan: Ask the low-level tp cancel the active hw scan. b856439b1b Eliad Peller 2011-06-13 3278 * The driver should ask the hardware to cancel the scan (if possible), b856439b1b Eliad Peller 2011-06-13 3279 * but the scan will be completed only after the driver will call b856439b1b Eliad Peller 2011-06-13 3280 * ieee80211_scan_completed(). b856439b1b Eliad Peller 2011-06-13 3281 * This callback is needed for wowlan, to prevent enqueueing a new b856439b1b Eliad Peller 2011-06-13 3282 * scan_work after the low-level driver was already suspended. b856439b1b Eliad Peller 2011-06-13 3283 * The callback can sleep. b856439b1b Eliad Peller 2011-06-13 3284 * 79f460ca49 Luciano Coelho 2011-05-11 3285 * @sched_scan_start: Ask the hardware to start scanning repeatedly at 79f460ca49 Luciano Coelho 2011-05-11 3286 * specific intervals. The driver must call the 79f460ca49 Luciano Coelho 2011-05-11 3287 * ieee80211_sched_scan_results() function whenever it finds results. 79f460ca49 Luciano Coelho 2011-05-11 3288 * This process will continue until sched_scan_stop is called. 79f460ca49 Luciano Coelho 2011-05-11 3289 * 79f460ca49 Luciano Coelho 2011-05-11 3290 * @sched_scan_stop: Tell the hardware to stop an ongoing scheduled scan. 37e3308cb2 Johannes Berg 2014-02-17 3291 * In this case, ieee80211_sched_scan_stopped() must not be called. 79f460ca49 Luciano Coelho 2011-05-11 3292 * 80e775bf08 Michael Buesch 2009-02-20 3293 * @sw_scan_start: Notifier function that is called just before a software scan 80e775bf08 Michael Buesch 2009-02-20 3294 * is started. Can be NULL, if the driver doesn't need this notification. a344d6778a Johannes Berg 2014-06-12 3295 * The mac_addr parameter allows supporting NL80211_SCAN_FLAG_RANDOM_ADDR, a344d6778a Johannes Berg 2014-06-12 3296 * the driver may set the NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR flag if it a344d6778a Johannes Berg 2014-06-12 3297 * can use this parameter. The callback can sleep. 80e775bf08 Michael Buesch 2009-02-20 3298 * e1781ed33a Kalle Valo 2009-12-23 3299 * @sw_scan_complete: Notifier function that is called just after a e1781ed33a Kalle Valo 2009-12-23 3300 * software scan finished. Can be NULL, if the driver doesn't need e1781ed33a Kalle Valo 2009-12-23 3301 * this notification. e1781ed33a Kalle Valo 2009-12-23 3302 * The callback can sleep. 80e775bf08 Michael Buesch 2009-02-20 3303 * 6dd1bf3118 Bob Copeland 2009-01-08 3304 * @get_stats: Return low-level statistics. 6dd1bf3118 Bob Copeland 2009-01-08 3305 * Returns zero if statistics are available. e1781ed33a Kalle Valo 2009-12-23 3306 * The callback can sleep. 7ac1bd6aec Johannes Berg 2007-09-14 3307 * 9352c19f63 Johannes Berg 2015-04-20 3308 * @get_key_seq: If your device implements encryption in hardware and does 9352c19f63 Johannes Berg 2015-04-20 3309 * IV/PN assignment then this callback should be provided to read the 9352c19f63 Johannes Berg 2015-04-20 3310 * IV/PN for the given key from hardware. e1781ed33a Kalle Valo 2009-12-23 3311 * The callback must be atomic. 75a5f0ccfd Johannes Berg 2007-09-18 3312 * f23a478075 Arik Nemtsov 2010-11-08 3313 * @set_frag_threshold: Configuration of fragmentation threshold. Assign this f3fe4e93dd Sara Sharon 2016-10-18 3314 * if the device does fragmentation by itself. Note that to prevent the f3fe4e93dd Sara Sharon 2016-10-18 3315 * stack from doing fragmentation IEEE80211_HW_SUPPORTS_TX_FRAG f3fe4e93dd Sara Sharon 2016-10-18 3316 * should be set as well. f23a478075 Arik Nemtsov 2010-11-08 3317 * The callback can sleep. f23a478075 Arik Nemtsov 2010-11-08 3318 * 75a5f0ccfd Johannes Berg 2007-09-18 3319 * @set_rts_threshold: Configuration of RTS threshold (if device needs it) e1781ed33a Kalle Valo 2009-12-23 3320 * The callback can sleep. 75a5f0ccfd Johannes Berg 2007-09-18 3321 * 34e895075e Johannes Berg 2010-02-03 3322 * @sta_add: Notifies low level driver about addition of an associated station, 34e895075e Johannes Berg 2010-02-03 3323 * AP, IBSS/WDS/mesh peer etc. This callback can sleep. 34e895075e Johannes Berg 2010-02-03 3324 * 34e895075e Johannes Berg 2010-02-03 3325 * @sta_remove: Notifies low level driver about removal of an associated 6a9d1b91f3 Johannes Berg 2013-12-04 3326 * station, AP, IBSS/WDS/mesh peer etc. Note that after the callback 6a9d1b91f3 Johannes Berg 2013-12-04 3327 * returns it isn't safe to use the pointer, not even RCU protected; 6a9d1b91f3 Johannes Berg 2013-12-04 3328 * no RCU grace period is guaranteed between returning here and freeing 6a9d1b91f3 Johannes Berg 2013-12-04 3329 * the station. See @sta_pre_rcu_remove if needed. 6a9d1b91f3 Johannes Berg 2013-12-04 3330 * This callback can sleep. 34e895075e Johannes Berg 2010-02-03 3331 * 77d2ece6fd Sujith Manoharan 2012-11-20 3332 * @sta_add_debugfs: Drivers can use this callback to add debugfs files 77d2ece6fd Sujith Manoharan 2012-11-20 3333 * when a station is added to mac80211's station list. This callback c7e9dbcf09 Johannes Berg 2016-09-14 3334 * should be within a CONFIG_MAC80211_DEBUGFS conditional. This c7e9dbcf09 Johannes Berg 2016-09-14 3335 * callback can sleep. 77d2ece6fd Sujith Manoharan 2012-11-20 3336 * 34e895075e Johannes Berg 2010-02-03 3337 * @sta_notify: Notifies low level driver about power state transition of an d057e5a381 Arik Nemtsov 2011-01-31 3338 * associated station, AP, IBSS/WDS/mesh peer etc. For a VIF operating d057e5a381 Arik Nemtsov 2011-01-31 3339 * in AP mode, this callback will not be called when the flag d057e5a381 Arik Nemtsov 2011-01-31 3340 * %IEEE80211_HW_AP_LINK_PS is set. Must be atomic. 4571d3bf87 Christian Lamparter 2008-11-30 3341 * f09603a259 Johannes Berg 2012-01-20 3342 * @sta_state: Notifies low level driver about state transition of a f09603a259 Johannes Berg 2012-01-20 3343 * station (which can be the AP, a client, IBSS/WDS/mesh peer etc.) f09603a259 Johannes Berg 2012-01-20 3344 * This callback is mutually exclusive with @sta_add/@sta_remove. f09603a259 Johannes Berg 2012-01-20 3345 * It must not fail for down transitions but may fail for transitions 6a9d1b91f3 Johannes Berg 2013-12-04 3346 * up the list of states. Also note that after the callback returns it 6a9d1b91f3 Johannes Berg 2013-12-04 3347 * isn't safe to use the pointer, not even RCU protected - no RCU grace 6a9d1b91f3 Johannes Berg 2013-12-04 3348 * period is guaranteed between returning here and freeing the station. 6a9d1b91f3 Johannes Berg 2013-12-04 3349 * See @sta_pre_rcu_remove if needed. 6a9d1b91f3 Johannes Berg 2013-12-04 3350 * The callback can sleep. 6a9d1b91f3 Johannes Berg 2013-12-04 3351 * 6a9d1b91f3 Johannes Berg 2013-12-04 3352 * @sta_pre_rcu_remove: Notify driver about station removal before RCU 6a9d1b91f3 Johannes Berg 2013-12-04 3353 * synchronisation. This is useful if a driver needs to have station 6a9d1b91f3 Johannes Berg 2013-12-04 3354 * pointers protected using RCU, it can then use this call to clear 6a9d1b91f3 Johannes Berg 2013-12-04 3355 * the pointers instead of waiting for an RCU grace period to elapse 6a9d1b91f3 Johannes Berg 2013-12-04 3356 * in @sta_state. f09603a259 Johannes Berg 2012-01-20 3357 * The callback can sleep. f09603a259 Johannes Berg 2012-01-20 3358 * 8f727ef3c4 Johannes Berg 2012-03-30 3359 * @sta_rc_update: Notifies the driver of changes to the bitrates that can be 8f727ef3c4 Johannes Berg 2012-03-30 3360 * used to transmit to the station. The changes are advertised with bits 8f727ef3c4 Johannes Berg 2012-03-30 3361 * from &enum ieee80211_rate_control_changed and the values are reflected 8f727ef3c4 Johannes Berg 2012-03-30 3362 * in the station data. This callback should only be used when the driver 8f727ef3c4 Johannes Berg 2012-03-30 3363 * uses hardware rate control (%IEEE80211_HW_HAS_RATE_CONTROL) since 8f727ef3c4 Johannes Berg 2012-03-30 3364 * otherwise the rate control algorithm is notified directly. 8f727ef3c4 Johannes Berg 2012-03-30 3365 * Must be atomic. f815e2b3c0 Johannes Berg 2014-11-19 3366 * @sta_rate_tbl_update: Notifies the driver that the rate table changed. This f815e2b3c0 Johannes Berg 2014-11-19 3367 * is only used if the configured rate control algorithm actually uses f815e2b3c0 Johannes Berg 2014-11-19 3368 * the new rate table API, and is therefore optional. Must be atomic. 8f727ef3c4 Johannes Berg 2012-03-30 3369 * 2b9a7e1bac Johannes Berg 2014-11-17 3370 * @sta_statistics: Get statistics for this station. For example with beacon 2b9a7e1bac Johannes Berg 2014-11-17 3371 * filtering, the statistics kept by mac80211 might not be accurate, so 2b9a7e1bac Johannes Berg 2014-11-17 3372 * let the driver pre-fill the statistics. The driver can fill most of 2b9a7e1bac Johannes Berg 2014-11-17 3373 * the values (indicating which by setting the filled bitmap), but not 2b9a7e1bac Johannes Berg 2014-11-17 3374 * all of them make sense - see the source for which ones are possible. 2b9a7e1bac Johannes Berg 2014-11-17 3375 * Statistics that the driver doesn't fill will be filled by mac80211. 2b9a7e1bac Johannes Berg 2014-11-17 3376 * The callback can sleep. 2b9a7e1bac Johannes Berg 2014-11-17 3377 * 75a5f0ccfd Johannes Berg 2007-09-18 3378 * @conf_tx: Configure TX queue parameters (EDCF (aifs, cw_min, cw_max), fe3fa82731 Johannes Berg 2008-09-08 3379 * bursting) for a hardware TX queue. 6dd1bf3118 Bob Copeland 2009-01-08 3380 * Returns a negative error code on failure. e1781ed33a Kalle Valo 2009-12-23 3381 * The callback can sleep. 75a5f0ccfd Johannes Berg 2007-09-18 3382 * 75a5f0ccfd Johannes Berg 2007-09-18 3383 * @get_tsf: Get the current TSF timer value from firmware/hardware. Currently, 3b5d665b51 Alina Friedrichsen 2009-01-24 3384 * this is only used for IBSS mode BSSID merging and debugging. Is not a 7b08b3b4a9 Alina Friedrichsen 2009-02-05 3385 * required function. e1781ed33a Kalle Valo 2009-12-23 3386 * The callback can sleep. 3b5d665b51 Alina Friedrichsen 2009-01-24 3387 * 3b5d665b51 Alina Friedrichsen 2009-01-24 3388 * @set_tsf: Set the TSF timer to the specified value in the firmware/hardware. 3b5d665b51 Alina Friedrichsen 2009-01-24 3389 * Currently, this is only used for IBSS mode debugging. Is not a 7b08b3b4a9 Alina Friedrichsen 2009-02-05 3390 * required function. e1781ed33a Kalle Valo 2009-12-23 3391 * The callback can sleep. 75a5f0ccfd Johannes Berg 2007-09-18 3392 * 354d381baf Pedersen, Thomas 2016-09-28 3393 * @offset_tsf: Offset the TSF timer by the specified value in the 354d381baf Pedersen, Thomas 2016-09-28 3394 * firmware/hardware. Preferred to set_tsf as it avoids delay between 354d381baf Pedersen, Thomas 2016-09-28 3395 * calling set_tsf() and hardware getting programmed, which will show up 354d381baf Pedersen, Thomas 2016-09-28 3396 * as TSF delay. Is not a required function. 354d381baf Pedersen, Thomas 2016-09-28 3397 * The callback can sleep. 354d381baf Pedersen, Thomas 2016-09-28 3398 * 75a5f0ccfd Johannes Berg 2007-09-18 3399 * @reset_tsf: Reset the TSF timer and allow firmware/hardware to synchronize 75a5f0ccfd Johannes Berg 2007-09-18 3400 * with other STAs in the IBSS. This is only used in IBSS mode. This 75a5f0ccfd Johannes Berg 2007-09-18 3401 * function is optional if the firmware/hardware takes full care of 75a5f0ccfd Johannes Berg 2007-09-18 3402 * TSF synchronization. e1781ed33a Kalle Valo 2009-12-23 3403 * The callback can sleep. 75a5f0ccfd Johannes Berg 2007-09-18 3404 * 75a5f0ccfd Johannes Berg 2007-09-18 3405 * @tx_last_beacon: Determine whether the last IBSS beacon was sent by us. 75a5f0ccfd Johannes Berg 2007-09-18 3406 * This is needed only for IBSS mode and the result of this function is 75a5f0ccfd Johannes Berg 2007-09-18 3407 * used to determine whether to reply to Probe Requests. 6dd1bf3118 Bob Copeland 2009-01-08 3408 * Returns non-zero if this device sent the last beacon. e1781ed33a Kalle Valo 2009-12-23 3409 * The callback can sleep. d3c990fb26 Ron Rindjunsky 2007-11-26 3410 * 4e8998f09b Randy Dunlap 2010-05-21 3411 * @get_survey: Return per-channel survey information 4e8998f09b Randy Dunlap 2010-05-21 3412 * 1f87f7d3a3 Johannes Berg 2009-06-02 3413 * @rfkill_poll: Poll rfkill hardware state. If you need this, you also 1f87f7d3a3 Johannes Berg 2009-06-02 3414 * need to set wiphy->rfkill_poll to %true before registration, 1f87f7d3a3 Johannes Berg 2009-06-02 3415 * and need to call wiphy_rfkill_set_hw_state() in the callback. e1781ed33a Kalle Valo 2009-12-23 3416 * The callback can sleep. aff89a9b90 Johannes Berg 2009-07-01 3417 * 310bc676e3 Lukáš Turek 2009-12-21 3418 * @set_coverage_class: Set slot time for given coverage class as specified 310bc676e3 Lukáš Turek 2009-12-21 3419 * in IEEE 802.11-2007 section 17.3.8.6 and modify ACK timeout a4bcaf5556 Lorenzo Bianconi 2014-09-04 3420 * accordingly; coverage class equals to -1 to enable ACK timeout a4bcaf5556 Lorenzo Bianconi 2014-09-04 3421 * estimation algorithm (dynack). To disable dynack set valid value for a4bcaf5556 Lorenzo Bianconi 2014-09-04 3422 * coverage class. This callback is not required and may sleep. 310bc676e3 Lukáš Turek 2009-12-21 3423 * 52981cd794 David Spinadel 2013-07-31 3424 * @testmode_cmd: Implement a cfg80211 test mode command. The passed @vif may 52981cd794 David Spinadel 2013-07-31 3425 * be %NULL. The callback can sleep. 71063f0e89 Wey-Yi Guy 2011-05-20 3426 * @testmode_dump: Implement a cfg80211 test mode dump. The callback can sleep. a80f7c0b08 Johannes Berg 2009-12-23 3427 * a80f7c0b08 Johannes Berg 2009-12-23 3428 * @flush: Flush all pending frames from the hardware queue, making sure 39ecc01d1b Johannes Berg 2013-02-13 3429 * that the hardware queues are empty. The @queues parameter is a bitmap 39ecc01d1b Johannes Berg 2013-02-13 3430 * of queues to flush, which is useful if different virtual interfaces 39ecc01d1b Johannes Berg 2013-02-13 3431 * use different hardware queues; it may also indicate all queues. 39ecc01d1b Johannes Berg 2013-02-13 3432 * If the parameter @drop is set to %true, pending frames may be dropped. 77be2c54c5 Emmanuel Grumbach 2014-03-27 3433 * Note that vif can be NULL. 39ecc01d1b Johannes Berg 2013-02-13 3434 * The callback can sleep. 5ce6e438d5 Johannes Berg 2010-05-11 3435 * 5ce6e438d5 Johannes Berg 2010-05-11 3436 * @channel_switch: Drivers that need (or want) to offload the channel 5ce6e438d5 Johannes Berg 2010-05-11 3437 * switch operation for CSAs received from the AP may implement this 5ce6e438d5 Johannes Berg 2010-05-11 3438 * callback. They must then call ieee80211_chswitch_done() to indicate 5ce6e438d5 Johannes Berg 2010-05-11 3439 * completion of the channel switch. 4e6cbfd09c John W. Linville 2010-07-29 3440 * 79b1c460a0 Bruno Randolf 2010-11-24 3441 * @set_antenna: Set antenna configuration (tx_ant, rx_ant) on the device. 79b1c460a0 Bruno Randolf 2010-11-24 3442 * Parameters are bitmaps of allowed antennas to use for TX/RX. Drivers may 79b1c460a0 Bruno Randolf 2010-11-24 3443 * reject TX/RX mask combinations they cannot support by returning -EINVAL 79b1c460a0 Bruno Randolf 2010-11-24 3444 * (also see nl80211.h @NL80211_ATTR_WIPHY_ANTENNA_TX). 79b1c460a0 Bruno Randolf 2010-11-24 3445 * 79b1c460a0 Bruno Randolf 2010-11-24 3446 * @get_antenna: Get current antenna configuration from device (tx_ant, rx_ant). 4976b4eb9d Johannes Berg 2011-01-04 3447 * 4976b4eb9d Johannes Berg 2011-01-04 3448 * @remain_on_channel: Starts an off-channel period on the given channel, must 4976b4eb9d Johannes Berg 2011-01-04 3449 * call back to ieee80211_ready_on_channel() when on that channel. Note 4976b4eb9d Johannes Berg 2011-01-04 3450 * that normal channel traffic is not stopped as this is intended for hw 4976b4eb9d Johannes Berg 2011-01-04 3451 * offload. Frames to transmit on the off-channel channel are transmitted 4976b4eb9d Johannes Berg 2011-01-04 3452 * normally except for the %IEEE80211_TX_CTL_TX_OFFCHAN flag. When the 4976b4eb9d Johannes Berg 2011-01-04 3453 * duration (which will always be non-zero) expires, the driver must call 196ac1c13d Johannes Berg 2012-06-05 3454 * ieee80211_remain_on_channel_expired(). 196ac1c13d Johannes Berg 2012-06-05 3455 * Note that this callback may be called while the device is in IDLE and 196ac1c13d Johannes Berg 2012-06-05 3456 * must be accepted in this case. 196ac1c13d Johannes Berg 2012-06-05 3457 * This callback may sleep. 4976b4eb9d Johannes Berg 2011-01-04 3458 * @cancel_remain_on_channel: Requests that an ongoing off-channel period is 4976b4eb9d Johannes Berg 2011-01-04 3459 * aborted before it expires. This callback may sleep. 38c091590f John W. Linville 2011-03-07 3460 * 38c091590f John W. Linville 2011-03-07 3461 * @set_ringparam: Set tx and rx ring sizes. 38c091590f John W. Linville 2011-03-07 3462 * 38c091590f John W. Linville 2011-03-07 3463 * @get_ringparam: Get tx and rx ring current and maximum sizes. e8306f9894 Vivek Natarajan 2011-04-06 3464 * e8306f9894 Vivek Natarajan 2011-04-06 3465 * @tx_frames_pending: Check if there is any pending frame in the hardware e8306f9894 Vivek Natarajan 2011-04-06 3466 * queues before entering power save. bdbfd6b582 Sujith Manoharan 2011-04-27 3467 * bdbfd6b582 Sujith Manoharan 2011-04-27 3468 * @set_bitrate_mask: Set a mask of rates to be used for rate control selection bdbfd6b582 Sujith Manoharan 2011-04-27 3469 * when transmitting a frame. Currently only legacy rates are handled. bdbfd6b582 Sujith Manoharan 2011-04-27 3470 * The callback can sleep. a818292952 Emmanuel Grumbach 2015-03-16 3471 * @event_callback: Notify driver about any event in mac80211. See a818292952 Emmanuel Grumbach 2015-03-16 3472 * &enum ieee80211_event_type for the different types. 6382246e89 Emmanuel Grumbach 2015-04-20 3473 * The callback must be atomic. 4049e09acd Johannes Berg 2011-09-29 3474 * 4049e09acd Johannes Berg 2011-09-29 3475 * @release_buffered_frames: Release buffered frames according to the given 4049e09acd Johannes Berg 2011-09-29 3476 * parameters. In the case where the driver buffers some frames for 4049e09acd Johannes Berg 2011-09-29 3477 * sleeping stations mac80211 will use this callback to tell the driver 4049e09acd Johannes Berg 2011-09-29 3478 * to release some frames, either for PS-poll or uAPSD. e227867f12 Masanari Iida 2014-02-18 3479 * Note that if the @more_data parameter is %false the driver must check 4049e09acd Johannes Berg 2011-09-29 3480 * if there are more frames on the given TIDs, and if there are more than 4049e09acd Johannes Berg 2011-09-29 3481 * the frames being released then it must still set the more-data bit in 4049e09acd Johannes Berg 2011-09-29 3482 * the frame. If the @more_data parameter is %true, then of course the 4049e09acd Johannes Berg 2011-09-29 3483 * more-data bit must always be set. 4049e09acd Johannes Berg 2011-09-29 3484 * The @tids parameter tells the driver which TIDs to release frames 4049e09acd Johannes Berg 2011-09-29 3485 * from, for PS-poll it will always have only a single bit set. deeaee197b Johannes Berg 2011-09-29 3486 * In the case this is used for a PS-poll initiated release, the deeaee197b Johannes Berg 2011-09-29 3487 * @num_frames parameter will always be 1 so code can be shared. In deeaee197b Johannes Berg 2011-09-29 3488 * this case the driver must also set %IEEE80211_TX_STATUS_EOSP flag deeaee197b Johannes Berg 2011-09-29 3489 * on the TX status (and must report TX status) so that the PS-poll deeaee197b Johannes Berg 2011-09-29 3490 * period is properly ended. This is used to avoid sending multiple deeaee197b Johannes Berg 2011-09-29 3491 * responses for a retried PS-poll frame. 4049e09acd Johannes Berg 2011-09-29 3492 * In the case this is used for uAPSD, the @num_frames parameter may be 4049e09acd Johannes Berg 2011-09-29 3493 * bigger than one, but the driver may send fewer frames (it must send 4049e09acd Johannes Berg 2011-09-29 3494 * at least one, however). In this case it is also responsible for 47086fc51a Johannes Berg 2011-09-29 3495 * setting the EOSP flag in the QoS header of the frames. Also, when the 47086fc51a Johannes Berg 2011-09-29 3496 * service period ends, the driver must set %IEEE80211_TX_STATUS_EOSP 37fbd90800 Johannes Berg 2011-09-29 3497 * on the last frame in the SP. Alternatively, it may call the function e943789edb Johannes Berg 2013-02-15 3498 * ieee80211_sta_eosp() to inform mac80211 of the end of the SP. 4049e09acd Johannes Berg 2011-09-29 3499 * This callback must be atomic. 40b9640883 Johannes Berg 2011-09-29 3500 * @allow_buffered_frames: Prepare device to allow the given number of frames 40b9640883 Johannes Berg 2011-09-29 3501 * to go out to the given station. The frames will be sent by mac80211 40b9640883 Johannes Berg 2011-09-29 3502 * via the usual TX path after this call. The TX information for frames 02f2f1a951 Johannes Berg 2012-02-27 3503 * released will also have the %IEEE80211_TX_CTL_NO_PS_BUFFER flag set 40b9640883 Johannes Berg 2011-09-29 3504 * and the last one will also have %IEEE80211_TX_STATUS_EOSP set. In case 40b9640883 Johannes Berg 2011-09-29 3505 * frames from multiple TIDs are released and the driver might reorder 40b9640883 Johannes Berg 2011-09-29 3506 * them between the TIDs, it must set the %IEEE80211_TX_STATUS_EOSP flag 40b9640883 Johannes Berg 2011-09-29 3507 * on the last frame and clear it on all others and also handle the EOSP 37fbd90800 Johannes Berg 2011-09-29 3508 * bit in the QoS header correctly. Alternatively, it can also call the e943789edb Johannes Berg 2013-02-15 3509 * ieee80211_sta_eosp() function. 40b9640883 Johannes Berg 2011-09-29 3510 * The @tids parameter is a bitmap and tells the driver which TIDs the 40b9640883 Johannes Berg 2011-09-29 3511 * frames will be on; it will at most have two bits set. 40b9640883 Johannes Berg 2011-09-29 3512 * This callback must be atomic. e352114fd6 Ben Greear 2012-04-23 3513 * e352114fd6 Ben Greear 2012-04-23 3514 * @get_et_sset_count: Ethtool API to get string-set count. e352114fd6 Ben Greear 2012-04-23 3515 * e352114fd6 Ben Greear 2012-04-23 3516 * @get_et_stats: Ethtool API to get a set of u64 stats. e352114fd6 Ben Greear 2012-04-23 3517 * e352114fd6 Ben Greear 2012-04-23 3518 * @get_et_strings: Ethtool API to get a set of strings to describe stats e352114fd6 Ben Greear 2012-04-23 3519 * and perhaps other supported types of ethtool data-sets. e352114fd6 Ben Greear 2012-04-23 3520 * a1845fc7c5 Johannes Berg 2012-06-27 3521 * @mgd_prepare_tx: Prepare for transmitting a management frame for association a1845fc7c5 Johannes Berg 2012-06-27 3522 * before associated. In multi-channel scenarios, a virtual interface is a1845fc7c5 Johannes Berg 2012-06-27 3523 * bound to a channel before it is associated, but as it isn't associated a1845fc7c5 Johannes Berg 2012-06-27 3524 * yet it need not necessarily be given airtime, in particular since any a1845fc7c5 Johannes Berg 2012-06-27 3525 * transmission to a P2P GO needs to be synchronized against the GO's a1845fc7c5 Johannes Berg 2012-06-27 3526 * powersave state. mac80211 will call this function before transmitting a a1845fc7c5 Johannes Berg 2012-06-27 3527 * management frame prior to having successfully associated to allow the a1845fc7c5 Johannes Berg 2012-06-27 3528 * driver to give it channel time for the transmission, to get a response a1845fc7c5 Johannes Berg 2012-06-27 3529 * and to be able to synchronize with the GO. 94ba92713f Ilan Peer 2018-02-19 3530 * For drivers that set %IEEE80211_HW_DEAUTH_NEED_MGD_TX_PREP, mac80211 94ba92713f Ilan Peer 2018-02-19 3531 * would also call this function before transmitting a deauthentication 94ba92713f Ilan Peer 2018-02-19 3532 * frame in case that no beacon was heard from the AP/P2P GO. a1845fc7c5 Johannes Berg 2012-06-27 3533 * The callback will be called before each transmission and upon return a1845fc7c5 Johannes Berg 2012-06-27 3534 * mac80211 will transmit the frame right away. d4e36e5554 Ilan Peer 2018-04-20 3535 * If duration is greater than zero, mac80211 hints to the driver the d4e36e5554 Ilan Peer 2018-04-20 3536 * duration for which the operation is requested. a1845fc7c5 Johannes Berg 2012-06-27 3537 * The callback is optional and can (should!) sleep. c3645eac47 Michal Kazior 2012-06-26 3538 * ee10f2c779 Arik Nemtsov 2014-06-11 3539 * @mgd_protect_tdls_discover: Protect a TDLS discovery session. After sending ee10f2c779 Arik Nemtsov 2014-06-11 3540 * a TDLS discovery-request, we expect a reply to arrive on the AP's ee10f2c779 Arik Nemtsov 2014-06-11 3541 * channel. We must stay on the channel (no PSM, scan, etc.), since a TDLS ee10f2c779 Arik Nemtsov 2014-06-11 3542 * setup-response is a direct packet not buffered by the AP. ee10f2c779 Arik Nemtsov 2014-06-11 3543 * mac80211 will call this function just before the transmission of a TDLS ee10f2c779 Arik Nemtsov 2014-06-11 3544 * discovery-request. The recommended period of protection is at least ee10f2c779 Arik Nemtsov 2014-06-11 3545 * 2 * (DTIM period). ee10f2c779 Arik Nemtsov 2014-06-11 3546 * The callback is optional and can sleep. ee10f2c779 Arik Nemtsov 2014-06-11 3547 * c3645eac47 Michal Kazior 2012-06-26 3548 * @add_chanctx: Notifies device driver about new channel context creation. dcae9e0203 Chaitanya T K 2015-10-30 3549 * This callback may sleep. c3645eac47 Michal Kazior 2012-06-26 3550 * @remove_chanctx: Notifies device driver about channel context destruction. dcae9e0203 Chaitanya T K 2015-10-30 3551 * This callback may sleep. c3645eac47 Michal Kazior 2012-06-26 3552 * @change_chanctx: Notifies device driver about channel context changes that c3645eac47 Michal Kazior 2012-06-26 3553 * may happen when combining different virtual interfaces on the same c3645eac47 Michal Kazior 2012-06-26 3554 * channel context with different settings dcae9e0203 Chaitanya T K 2015-10-30 3555 * This callback may sleep. c3645eac47 Michal Kazior 2012-06-26 3556 * @assign_vif_chanctx: Notifies device driver about channel context being bound c3645eac47 Michal Kazior 2012-06-26 3557 * to vif. Possible use is for hw queue remapping. dcae9e0203 Chaitanya T K 2015-10-30 3558 * This callback may sleep. c3645eac47 Michal Kazior 2012-06-26 3559 * @unassign_vif_chanctx: Notifies device driver about channel context being c3645eac47 Michal Kazior 2012-06-26 3560 * unbound from vif. dcae9e0203 Chaitanya T K 2015-10-30 3561 * This callback may sleep. 1a5f0c13d1 Luciano Coelho 2014-05-23 3562 * @switch_vif_chanctx: switch a number of vifs from one chanctx to 1a5f0c13d1 Luciano Coelho 2014-05-23 3563 * another, as specified in the list of 1a5f0c13d1 Luciano Coelho 2014-05-23 3564 * @ieee80211_vif_chanctx_switch passed to the driver, according 1a5f0c13d1 Luciano Coelho 2014-05-23 3565 * to the mode defined in &ieee80211_chanctx_switch_mode. dcae9e0203 Chaitanya T K 2015-10-30 3566 * This callback may sleep. 1a5f0c13d1 Luciano Coelho 2014-05-23 3567 * 1041638f2b Johannes Berg 2012-10-19 3568 * @start_ap: Start operation on the AP interface, this is called after all the 1041638f2b Johannes Berg 2012-10-19 3569 * information in bss_conf is set and beacon can be retrieved. A channel 1041638f2b Johannes Berg 2012-10-19 3570 * context is bound before this is called. Note that if the driver uses 1041638f2b Johannes Berg 2012-10-19 3571 * software scan or ROC, this (and @stop_ap) isn't called when the AP is 1041638f2b Johannes Berg 2012-10-19 3572 * just "paused" for scanning/ROC, which is indicated by the beacon being 1041638f2b Johannes Berg 2012-10-19 3573 * disabled/enabled via @bss_info_changed. 1041638f2b Johannes Berg 2012-10-19 3574 * @stop_ap: Stop operation on the AP interface. 9214ad7f9a Johannes Berg 2012-11-06 3575 * cf2c92d840 Eliad Peller 2014-11-04 3576 * @reconfig_complete: Called after a call to ieee80211_restart_hw() and cf2c92d840 Eliad Peller 2014-11-04 3577 * during resume, when the reconfiguration has completed. cf2c92d840 Eliad Peller 2014-11-04 3578 * This can help the driver implement the reconfiguration step (and cf2c92d840 Eliad Peller 2014-11-04 3579 * indicate mac80211 is ready to receive frames). cf2c92d840 Eliad Peller 2014-11-04 3580 * This callback may sleep. 8f21b0adfe Johannes Berg 2013-01-11 3581 * a65240c101 Johannes Berg 2013-01-14 3582 * @ipv6_addr_change: IPv6 address assignment on the given interface changed. a65240c101 Johannes Berg 2013-01-14 3583 * Currently, this is only called for managed or P2P client interfaces. a65240c101 Johannes Berg 2013-01-14 3584 * This callback is optional; it must not sleep. 73da7d5bab Simon Wunderlich 2013-07-11 3585 * 73da7d5bab Simon Wunderlich 2013-07-11 3586 * @channel_switch_beacon: Starts a channel switch to a new channel. 73da7d5bab Simon Wunderlich 2013-07-11 3587 * Beacons are modified to include CSA or ECSA IEs before calling this 73da7d5bab Simon Wunderlich 2013-07-11 3588 * function. The corresponding count fields in these IEs must be 66e01cf99e Luciano Coelho 2014-01-13 3589 * decremented, and when they reach 1 the driver must call 73da7d5bab Simon Wunderlich 2013-07-11 3590 * ieee80211_csa_finish(). Drivers which use ieee80211_beacon_get() 73da7d5bab Simon Wunderlich 2013-07-11 3591 * get the csa counter decremented by mac80211, but must check if it is 66e01cf99e Luciano Coelho 2014-01-13 3592 * 1 using ieee80211_csa_is_complete() after the beacon has been 73da7d5bab Simon Wunderlich 2013-07-11 3593 * transmitted and then call ieee80211_csa_finish(). 66e01cf99e Luciano Coelho 2014-01-13 3594 * If the CSA count starts as zero or 1, this function will not be called, 66e01cf99e Luciano Coelho 2014-01-13 3595 * since there won't be any time to beacon before the switch anyway. 6d027bcc8a Luciano Coelho 2014-10-08 3596 * @pre_channel_switch: This is an optional callback that is called 6d027bcc8a Luciano Coelho 2014-10-08 3597 * before a channel switch procedure is started (ie. when a STA 9332ef9dbd Masahiro Yamada 2017-02-27 3598 * gets a CSA or a userspace initiated channel-switch), allowing 6d027bcc8a Luciano Coelho 2014-10-08 3599 * the driver to prepare for the channel switch. f1d65583bc Luciano Coelho 2014-10-08 3600 * @post_channel_switch: This is an optional callback that is called f1d65583bc Luciano Coelho 2014-10-08 3601 * after a channel switch procedure is completed, allowing the f1d65583bc Luciano Coelho 2014-10-08 3602 * driver to go back to a normal configuration. 73da7d5bab Simon Wunderlich 2013-07-11 3603 * 55fff50113 Johannes Berg 2013-08-19 3604 * @join_ibss: Join an IBSS (on an IBSS interface); this is called after all 55fff50113 Johannes Berg 2013-08-19 3605 * information in bss_conf is set up and the beacon can be retrieved. A 55fff50113 Johannes Berg 2013-08-19 3606 * channel context is bound before this is called. 55fff50113 Johannes Berg 2013-08-19 3607 * @leave_ibss: Leave the IBSS again. cca674d47e Antonio Quartulli 2014-05-19 3608 * cca674d47e Antonio Quartulli 2014-05-19 3609 * @get_expected_throughput: extract the expected throughput towards the cca674d47e Antonio Quartulli 2014-05-19 3610 * specified station. The returned value is expressed in Kbps. It returns 0 cca674d47e Antonio Quartulli 2014-05-19 3611 * if the RC algorithm does not have proper data to provide. 5b3dc42b1b Felix Fietkau 2014-10-26 3612 * 5b3dc42b1b Felix Fietkau 2014-10-26 3613 * @get_txpower: get current maximum tx power (in dBm) based on configuration 5b3dc42b1b Felix Fietkau 2014-10-26 3614 * and hardware limits. a7a6bdd067 Arik Nemtsov 2014-11-09 3615 * a7a6bdd067 Arik Nemtsov 2014-11-09 3616 * @tdls_channel_switch: Start channel-switching with a TDLS peer. The driver a7a6bdd067 Arik Nemtsov 2014-11-09 3617 * is responsible for continually initiating channel-switching operations a7a6bdd067 Arik Nemtsov 2014-11-09 3618 * and returning to the base channel for communication with the AP. The a7a6bdd067 Arik Nemtsov 2014-11-09 3619 * driver receives a channel-switch request template and the location of a7a6bdd067 Arik Nemtsov 2014-11-09 3620 * the switch-timing IE within the template as part of the invocation. a7a6bdd067 Arik Nemtsov 2014-11-09 3621 * The template is valid only within the call, and the driver can a7a6bdd067 Arik Nemtsov 2014-11-09 3622 * optionally copy the skb for further re-use. a7a6bdd067 Arik Nemtsov 2014-11-09 3623 * @tdls_cancel_channel_switch: Stop channel-switching with a TDLS peer. Both a7a6bdd067 Arik Nemtsov 2014-11-09 3624 * peers must be on the base channel when the call completes. 8a4d32f30d Arik Nemtsov 2014-11-09 3625 * @tdls_recv_channel_switch: a TDLS channel-switch related frame (request or 8a4d32f30d Arik Nemtsov 2014-11-09 3626 * response) has been received from a remote peer. The driver gets 8a4d32f30d Arik Nemtsov 2014-11-09 3627 * parameters parsed from the incoming frame and may use them to continue 8a4d32f30d Arik Nemtsov 2014-11-09 3628 * an ongoing channel-switch operation. In addition, a channel-switch 8a4d32f30d Arik Nemtsov 2014-11-09 3629 * response template is provided, together with the location of the 8a4d32f30d Arik Nemtsov 2014-11-09 3630 * switch-timing IE within the template. The skb can only be used within 8a4d32f30d Arik Nemtsov 2014-11-09 3631 * the function call. ba8c3d6f16 Felix Fietkau 2015-03-27 3632 * ba8c3d6f16 Felix Fietkau 2015-03-27 3633 * @wake_tx_queue: Called when new packets have been added to the queue. f59374eb42 Sara Sharon 2016-03-02 3634 * @sync_rx_queues: Process all pending frames in RSS queues. This is a f59374eb42 Sara Sharon 2016-03-02 3635 * synchronization which is needed in case driver has in its RSS queues f59374eb42 Sara Sharon 2016-03-02 3636 * pending frames that were received prior to the control path action f59374eb42 Sara Sharon 2016-03-02 3637 * currently taken (e.g. disassociation) but are not processed yet. 708d50edb1 Ayala Beker 2016-09-20 3638 * 708d50edb1 Ayala Beker 2016-09-20 3639 * @start_nan: join an existing NAN cluster, or create a new one. 708d50edb1 Ayala Beker 2016-09-20 3640 * @stop_nan: leave the NAN cluster. 5953ff6d6a Ayala Beker 2016-09-20 3641 * @nan_change_conf: change NAN configuration. The data in cfg80211_nan_conf 5953ff6d6a Ayala Beker 2016-09-20 3642 * contains full new configuration and changes specify which parameters 5953ff6d6a Ayala Beker 2016-09-20 3643 * are changed with respect to the last NAN config. 5953ff6d6a Ayala Beker 2016-09-20 3644 * The driver gets both full configuration and the changed parameters since 5953ff6d6a Ayala Beker 2016-09-20 3645 * some devices may need the full configuration while others need only the 5953ff6d6a Ayala Beker 2016-09-20 3646 * changed parameters. 167e33f4f6 Ayala Beker 2016-09-20 3647 * @add_nan_func: Add a NAN function. Returns 0 on success. The data in 167e33f4f6 Ayala Beker 2016-09-20 3648 * cfg80211_nan_func must not be referenced outside the scope of 167e33f4f6 Ayala Beker 2016-09-20 3649 * this call. 167e33f4f6 Ayala Beker 2016-09-20 3650 * @del_nan_func: Remove a NAN function. The driver must call 167e33f4f6 Ayala Beker 2016-09-20 3651 * ieee80211_nan_func_terminated() with 167e33f4f6 Ayala Beker 2016-09-20 3652 * NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST reason code upon removal. 9739fe29a2 Sara Sharon 2018-09-05 3653 * @can_aggregate_in_amsdu: Called in order to determine if HW supports 9739fe29a2 Sara Sharon 2018-09-05 3654 * aggregating two specific frames in the same A-MSDU. The relation 9739fe29a2 Sara Sharon 2018-09-05 3655 * between the skbs should be symmetric and transitive. Note that while 9739fe29a2 Sara Sharon 2018-09-05 3656 * skb is always a real frame, head may or may not be an A-MSDU. bc847970f4 Pradeep Kumar Chitrapu 2018-10-03 3657 * @get_ftm_responder_stats: Retrieve FTM responder statistics, if available. bc847970f4 Pradeep Kumar Chitrapu 2018-10-03 3658 * Statistics should be cumulative, currently no way to reset is provided. cee7013be9 Johannes Berg 2018-10-16 3659 * cee7013be9 Johannes Berg 2018-10-16 3660 * @start_pmsr: start peer measurement (e.g. FTM) (this call can sleep) cee7013be9 Johannes Berg 2018-10-16 3661 * @abort_pmsr: abort peer measurement (this call can sleep) 8f20fc2498 Johannes Berg 2007-08-28 3662 */ 75a5f0ccfd Johannes Berg 2007-09-18 3663 struct ieee80211_ops { 36323f817a Thomas Huehn 2012-07-23 3664 void (*tx)(struct ieee80211_hw *hw, 36323f817a Thomas Huehn 2012-07-23 3665 struct ieee80211_tx_control *control, 36323f817a Thomas Huehn 2012-07-23 3666 struct sk_buff *skb); 75a5f0ccfd Johannes Berg 2007-09-18 3667 int (*start)(struct ieee80211_hw *hw); 75a5f0ccfd Johannes Berg 2007-09-18 3668 void (*stop)(struct ieee80211_hw *hw); eecc48000a Johannes Berg 2011-05-04 3669 #ifdef CONFIG_PM eecc48000a Johannes Berg 2011-05-04 3670 int (*suspend)(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan); eecc48000a Johannes Berg 2011-05-04 3671 int (*resume)(struct ieee80211_hw *hw); 6d52563f2b Johannes Berg 2012-04-04 3672 void (*set_wakeup)(struct ieee80211_hw *hw, bool enabled); eecc48000a Johannes Berg 2011-05-04 3673 #endif 75a5f0ccfd Johannes Berg 2007-09-18 3674 int (*add_interface)(struct ieee80211_hw *hw, 1ed32e4fc8 Johannes Berg 2009-12-23 3675 struct ieee80211_vif *vif); 34d4bc4d41 Johannes Berg 2010-08-27 3676 int (*change_interface)(struct ieee80211_hw *hw, 34d4bc4d41 Johannes Berg 2010-08-27 3677 struct ieee80211_vif *vif, 2ca27bcff7 Johannes Berg 2010-09-16 3678 enum nl80211_iftype new_type, bool p2p); 75a5f0ccfd Johannes Berg 2007-09-18 3679 void (*remove_interface)(struct ieee80211_hw *hw, 1ed32e4fc8 Johannes Berg 2009-12-23 3680 struct ieee80211_vif *vif); e8975581f6 Johannes Berg 2008-10-09 3681 int (*config)(struct ieee80211_hw *hw, u32 changed); 471b3efdfc Johannes Berg 2007-12-28 3682 void (*bss_info_changed)(struct ieee80211_hw *hw, 471b3efdfc Johannes Berg 2007-12-28 3683 struct ieee80211_vif *vif, 471b3efdfc Johannes Berg 2007-12-28 3684 struct ieee80211_bss_conf *info, 471b3efdfc Johannes Berg 2007-12-28 3685 u32 changed); b2abb6e2bc Johannes Berg 2011-07-19 3686 1041638f2b Johannes Berg 2012-10-19 3687 int (*start_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif); 1041638f2b Johannes Berg 2012-10-19 3688 void (*stop_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif); 1041638f2b Johannes Berg 2012-10-19 3689 3ac64beecd Johannes Berg 2009-08-17 3690 u64 (*prepare_multicast)(struct ieee80211_hw *hw, 22bedad3ce Jiri Pirko 2010-04-01 3691 struct netdev_hw_addr_list *mc_list); 75a5f0ccfd Johannes Berg 2007-09-18 3692 void (*configure_filter)(struct ieee80211_hw *hw, 75a5f0ccfd Johannes Berg 2007-09-18 3693 unsigned int changed_flags, 75a5f0ccfd Johannes Berg 2007-09-18 3694 unsigned int *total_flags, 3ac64beecd Johannes Berg 2009-08-17 3695 u64 multicast); 1b09b5568e Andrei Otcheretianski 2015-08-15 3696 void (*config_iface_filter)(struct ieee80211_hw *hw, 1b09b5568e Andrei Otcheretianski 2015-08-15 3697 struct ieee80211_vif *vif, 1b09b5568e Andrei Otcheretianski 2015-08-15 3698 unsigned int filter_flags, 1b09b5568e Andrei Otcheretianski 2015-08-15 3699 unsigned int changed_flags); 17741cdc26 Johannes Berg 2008-09-11 3700 int (*set_tim)(struct ieee80211_hw *hw, struct ieee80211_sta *sta, 17741cdc26 Johannes Berg 2008-09-11 3701 bool set); ea49c359f3 Johannes Berg 2007-09-18 3702 int (*set_key)(struct ieee80211_hw *hw, enum set_key_cmd cmd, dc822b5db4 Johannes Berg 2008-12-29 3703 struct ieee80211_vif *vif, struct ieee80211_sta *sta, 11a843b7e1 Johannes Berg 2007-08-28 3704 struct ieee80211_key_conf *key); 9ae4fda332 Emmanuel Grumbach 2008-03-20 3705 void (*update_tkip_key)(struct ieee80211_hw *hw, b3fbdcf49f Johannes Berg 2010-01-21 3706 struct ieee80211_vif *vif, b3fbdcf49f Johannes Berg 2010-01-21 3707 struct ieee80211_key_conf *conf, b3fbdcf49f Johannes Berg 2010-01-21 3708 struct ieee80211_sta *sta, 9ae4fda332 Emmanuel Grumbach 2008-03-20 3709 u32 iv32, u16 *phase1key); c68f4b892c Johannes Berg 2011-07-05 3710 void (*set_rekey_data)(struct ieee80211_hw *hw, c68f4b892c Johannes Berg 2011-07-05 3711 struct ieee80211_vif *vif, c68f4b892c Johannes Berg 2011-07-05 3712 struct cfg80211_gtk_rekey_data *data); de5fad8157 Yoni Divinsky 2012-05-30 3713 void (*set_default_unicast_key)(struct ieee80211_hw *hw, de5fad8157 Yoni Divinsky 2012-05-30 3714 struct ieee80211_vif *vif, int idx); a060bbfe4e Johannes Berg 2010-04-27 3715 int (*hw_scan)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, c56ef67250 David Spinadel 2014-02-05 3716 struct ieee80211_scan_request *req); b856439b1b Eliad Peller 2011-06-13 3717 void (*cancel_hw_scan)(struct ieee80211_hw *hw, b856439b1b Eliad Peller 2011-06-13 3718 struct ieee80211_vif *vif); 79f460ca49 Luciano Coelho 2011-05-11 3719 int (*sched_scan_start)(struct ieee80211_hw *hw, 79f460ca49 Luciano Coelho 2011-05-11 3720 struct ieee80211_vif *vif, 79f460ca49 Luciano Coelho 2011-05-11 3721 struct cfg80211_sched_scan_request *req, 633e271326 David Spinadel 2014-02-06 3722 struct ieee80211_scan_ies *ies); 37e3308cb2 Johannes Berg 2014-02-17 3723 int (*sched_scan_stop)(struct ieee80211_hw *hw, 79f460ca49 Luciano Coelho 2011-05-11 3724 struct ieee80211_vif *vif); a344d6778a Johannes Berg 2014-06-12 3725 void (*sw_scan_start)(struct ieee80211_hw *hw, a344d6778a Johannes Berg 2014-06-12 3726 struct ieee80211_vif *vif, a344d6778a Johannes Berg 2014-06-12 3727 const u8 *mac_addr); a344d6778a Johannes Berg 2014-06-12 3728 void (*sw_scan_complete)(struct ieee80211_hw *hw, a344d6778a Johannes Berg 2014-06-12 3729 struct ieee80211_vif *vif); f0706e828e Jiri Benc 2007-05-05 3730 int (*get_stats)(struct ieee80211_hw *hw, f0706e828e Jiri Benc 2007-05-05 3731 struct ieee80211_low_level_stats *stats); 9352c19f63 Johannes Berg 2015-04-20 3732 void (*get_key_seq)(struct ieee80211_hw *hw, 9352c19f63 Johannes Berg 2015-04-20 3733 struct ieee80211_key_conf *key, 9352c19f63 Johannes Berg 2015-04-20 3734 struct ieee80211_key_seq *seq); f23a478075 Arik Nemtsov 2010-11-08 3735 int (*set_frag_threshold)(struct ieee80211_hw *hw, u32 value); f0706e828e Jiri Benc 2007-05-05 3736 int (*set_rts_threshold)(struct ieee80211_hw *hw, u32 value); 34e895075e Johannes Berg 2010-02-03 3737 int (*sta_add)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 34e895075e Johannes Berg 2010-02-03 3738 struct ieee80211_sta *sta); 34e895075e Johannes Berg 2010-02-03 3739 int (*sta_remove)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 34e895075e Johannes Berg 2010-02-03 3740 struct ieee80211_sta *sta); 77d2ece6fd Sujith Manoharan 2012-11-20 3741 #ifdef CONFIG_MAC80211_DEBUGFS 77d2ece6fd Sujith Manoharan 2012-11-20 3742 void (*sta_add_debugfs)(struct ieee80211_hw *hw, 77d2ece6fd Sujith Manoharan 2012-11-20 3743 struct ieee80211_vif *vif, 77d2ece6fd Sujith Manoharan 2012-11-20 3744 struct ieee80211_sta *sta, 77d2ece6fd Sujith Manoharan 2012-11-20 3745 struct dentry *dir); 77d2ece6fd Sujith Manoharan 2012-11-20 3746 #endif 32bfd35d4b Johannes Berg 2007-12-19 3747 void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 17741cdc26 Johannes Berg 2008-09-11 3748 enum sta_notify_cmd, struct ieee80211_sta *sta); 54ad09a4dc Ashok Raj Nagarajan 2019-01-30 3749 int (*sta_set_txpwr)(struct ieee80211_hw *hw, 54ad09a4dc Ashok Raj Nagarajan 2019-01-30 3750 struct ieee80211_vif *vif, 54ad09a4dc Ashok Raj Nagarajan 2019-01-30 3751 struct ieee80211_sta *sta); f09603a259 Johannes Berg 2012-01-20 3752 int (*sta_state)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, f09603a259 Johannes Berg 2012-01-20 3753 struct ieee80211_sta *sta, f09603a259 Johannes Berg 2012-01-20 3754 enum ieee80211_sta_state old_state, f09603a259 Johannes Berg 2012-01-20 3755 enum ieee80211_sta_state new_state); 6a9d1b91f3 Johannes Berg 2013-12-04 3756 void (*sta_pre_rcu_remove)(struct ieee80211_hw *hw, 6a9d1b91f3 Johannes Berg 2013-12-04 3757 struct ieee80211_vif *vif, 6a9d1b91f3 Johannes Berg 2013-12-04 3758 struct ieee80211_sta *sta); 8f727ef3c4 Johannes Berg 2012-03-30 3759 void (*sta_rc_update)(struct ieee80211_hw *hw, 8f727ef3c4 Johannes Berg 2012-03-30 3760 struct ieee80211_vif *vif, 8f727ef3c4 Johannes Berg 2012-03-30 3761 struct ieee80211_sta *sta, 8f727ef3c4 Johannes Berg 2012-03-30 3762 u32 changed); f815e2b3c0 Johannes Berg 2014-11-19 3763 void (*sta_rate_tbl_update)(struct ieee80211_hw *hw, f815e2b3c0 Johannes Berg 2014-11-19 3764 struct ieee80211_vif *vif, f815e2b3c0 Johannes Berg 2014-11-19 3765 struct ieee80211_sta *sta); 2b9a7e1bac Johannes Berg 2014-11-17 3766 void (*sta_statistics)(struct ieee80211_hw *hw, 2b9a7e1bac Johannes Berg 2014-11-17 3767 struct ieee80211_vif *vif, 2b9a7e1bac Johannes Berg 2014-11-17 3768 struct ieee80211_sta *sta, 2b9a7e1bac Johannes Berg 2014-11-17 3769 struct station_info *sinfo); 8a3a3c85e4 Eliad Peller 2011-10-02 3770 int (*conf_tx)(struct ieee80211_hw *hw, a3304b0a17 Johannes Berg 2012-03-28 3771 struct ieee80211_vif *vif, u16 ac, f0706e828e Jiri Benc 2007-05-05 3772 const struct ieee80211_tx_queue_params *params); 37a41b4aff Eliad Peller 2011-09-21 3773 u64 (*get_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif); 37a41b4aff Eliad Peller 2011-09-21 3774 void (*set_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 37a41b4aff Eliad Peller 2011-09-21 3775 u64 tsf); 354d381baf Pedersen, Thomas 2016-09-28 3776 void (*offset_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 354d381baf Pedersen, Thomas 2016-09-28 3777 s64 offset); 37a41b4aff Eliad Peller 2011-09-21 3778 void (*reset_tsf)(struct ieee80211_hw *hw, struct ieee80211_vif *vif); f0706e828e Jiri Benc 2007-05-05 3779 int (*tx_last_beacon)(struct ieee80211_hw *hw); 57eeb2086d Johannes Berg 2017-01-13 3780 57eeb2086d Johannes Berg 2017-01-13 3781 /** 57eeb2086d Johannes Berg 2017-01-13 3782 * @ampdu_action: 57eeb2086d Johannes Berg 2017-01-13 3783 * Perform a certain A-MPDU action. 57eeb2086d Johannes Berg 2017-01-13 3784 * The RA/TID combination determines the destination and TID we want 57eeb2086d Johannes Berg 2017-01-13 3785 * the ampdu action to be performed for. The action is defined through 57eeb2086d Johannes Berg 2017-01-13 3786 * ieee80211_ampdu_mlme_action. 57eeb2086d Johannes Berg 2017-01-13 3787 * When the action is set to %IEEE80211_AMPDU_TX_OPERATIONAL the driver 57eeb2086d Johannes Berg 2017-01-13 3788 * may neither send aggregates containing more subframes than @buf_size 57eeb2086d Johannes Berg 2017-01-13 3789 * nor send aggregates in a way that lost frames would exceed the 57eeb2086d Johannes Berg 2017-01-13 3790 * buffer size. If just limiting the aggregate size, this would be 57eeb2086d Johannes Berg 2017-01-13 3791 * possible with a buf_size of 8: 57eeb2086d Johannes Berg 2017-01-13 3792 * 57eeb2086d Johannes Berg 2017-01-13 3793 * - ``TX: 1.....7`` 57eeb2086d Johannes Berg 2017-01-13 3794 * - ``RX: 2....7`` (lost frame #1) 57eeb2086d Johannes Berg 2017-01-13 3795 * - ``TX: 8..1...`` 57eeb2086d Johannes Berg 2017-01-13 3796 * 57eeb2086d Johannes Berg 2017-01-13 3797 * which is invalid since #1 was now re-transmitted well past the 57eeb2086d Johannes Berg 2017-01-13 3798 * buffer size of 8. Correct ways to retransmit #1 would be: 57eeb2086d Johannes Berg 2017-01-13 3799 * 57eeb2086d Johannes Berg 2017-01-13 3800 * - ``TX: 1 or`` 57eeb2086d Johannes Berg 2017-01-13 3801 * - ``TX: 18 or`` 57eeb2086d Johannes Berg 2017-01-13 3802 * - ``TX: 81`` 57eeb2086d Johannes Berg 2017-01-13 3803 * 57eeb2086d Johannes Berg 2017-01-13 3804 * Even ``189`` would be wrong since 1 could be lost again. 57eeb2086d Johannes Berg 2017-01-13 3805 * 57eeb2086d Johannes Berg 2017-01-13 3806 * Returns a negative error code on failure. 57eeb2086d Johannes Berg 2017-01-13 3807 * The callback can sleep. 57eeb2086d Johannes Berg 2017-01-13 3808 */ 1b7d03acbf Ron Rindjunsky 2007-12-25 3809 int (*ampdu_action)(struct ieee80211_hw *hw, c951ad3550 Johannes Berg 2009-11-16 3810 struct ieee80211_vif *vif, 50ea05efaf Sara Sharon 2015-12-30 3811 struct ieee80211_ampdu_params *params); 1289723ef2 Holger Schurig 2010-04-19 3812 int (*get_survey)(struct ieee80211_hw *hw, int idx, 1289723ef2 Holger Schurig 2010-04-19 3813 struct survey_info *survey); 1f87f7d3a3 Johannes Berg 2009-06-02 3814 void (*rfkill_poll)(struct ieee80211_hw *hw); a4bcaf5556 Lorenzo Bianconi 2014-09-04 3815 void (*set_coverage_class)(struct ieee80211_hw *hw, s16 coverage_class); aff89a9b90 Johannes Berg 2009-07-01 3816 #ifdef CONFIG_NL80211_TESTMODE 52981cd794 David Spinadel 2013-07-31 3817 int (*testmode_cmd)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 52981cd794 David Spinadel 2013-07-31 3818 void *data, int len); 71063f0e89 Wey-Yi Guy 2011-05-20 3819 int (*testmode_dump)(struct ieee80211_hw *hw, struct sk_buff *skb, 71063f0e89 Wey-Yi Guy 2011-05-20 3820 struct netlink_callback *cb, 71063f0e89 Wey-Yi Guy 2011-05-20 3821 void *data, int len); aff89a9b90 Johannes Berg 2009-07-01 3822 #endif 77be2c54c5 Emmanuel Grumbach 2014-03-27 3823 void (*flush)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 77be2c54c5 Emmanuel Grumbach 2014-03-27 3824 u32 queues, bool drop); 5ce6e438d5 Johannes Berg 2010-05-11 3825 void (*channel_switch)(struct ieee80211_hw *hw, 0f791eb47f Luciano Coelho 2014-10-08 3826 struct ieee80211_vif *vif, 5ce6e438d5 Johannes Berg 2010-05-11 3827 struct ieee80211_channel_switch *ch_switch); 15d9675321 Bruno Randolf 2010-11-10 3828 int (*set_antenna)(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant); 15d9675321 Bruno Randolf 2010-11-10 3829 int (*get_antenna)(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant); 21f8358964 Johannes Berg 2010-12-18 3830 21f8358964 Johannes Berg 2010-12-18 3831 int (*remain_on_channel)(struct ieee80211_hw *hw, 4988456862 Eliad Peller 2012-11-19 3832 struct ieee80211_vif *vif, 21f8358964 Johannes Berg 2010-12-18 3833 struct ieee80211_channel *chan, d339d5ca8e Ilan Peer 2013-02-12 3834 int duration, d339d5ca8e Ilan Peer 2013-02-12 3835 enum ieee80211_roc_type type); 21f8358964 Johannes Berg 2010-12-18 3836 int (*cancel_remain_on_channel)(struct ieee80211_hw *hw); 38c091590f John W. Linville 2011-03-07 3837 int (*set_ringparam)(struct ieee80211_hw *hw, u32 tx, u32 rx); 38c091590f John W. Linville 2011-03-07 3838 void (*get_ringparam)(struct ieee80211_hw *hw, 38c091590f John W. Linville 2011-03-07 3839 u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max); e8306f9894 Vivek Natarajan 2011-04-06 3840 bool (*tx_frames_pending)(struct ieee80211_hw *hw); bdbfd6b582 Sujith Manoharan 2011-04-27 3841 int (*set_bitrate_mask)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, bdbfd6b582 Sujith Manoharan 2011-04-27 3842 const struct cfg80211_bitrate_mask *mask); a818292952 Emmanuel Grumbach 2015-03-16 3843 void (*event_callback)(struct ieee80211_hw *hw, 887da9176e Emmanuel Grumbach 2013-01-20 3844 struct ieee80211_vif *vif, a818292952 Emmanuel Grumbach 2015-03-16 3845 const struct ieee80211_event *event); 4049e09acd Johannes Berg 2011-09-29 3846 40b9640883 Johannes Berg 2011-09-29 3847 void (*allow_buffered_frames)(struct ieee80211_hw *hw, 40b9640883 Johannes Berg 2011-09-29 3848 struct ieee80211_sta *sta, 40b9640883 Johannes Berg 2011-09-29 3849 u16 tids, int num_frames, 40b9640883 Johannes Berg 2011-09-29 3850 enum ieee80211_frame_release_type reason, 40b9640883 Johannes Berg 2011-09-29 3851 bool more_data); 4049e09acd Johannes Berg 2011-09-29 3852 void (*release_buffered_frames)(struct ieee80211_hw *hw, 4049e09acd Johannes Berg 2011-09-29 3853 struct ieee80211_sta *sta, 4049e09acd Johannes Berg 2011-09-29 3854 u16 tids, int num_frames, 4049e09acd Johannes Berg 2011-09-29 3855 enum ieee80211_frame_release_type reason, 4049e09acd Johannes Berg 2011-09-29 3856 bool more_data); e352114fd6 Ben Greear 2012-04-23 3857 e352114fd6 Ben Greear 2012-04-23 3858 int (*get_et_sset_count)(struct ieee80211_hw *hw, e352114fd6 Ben Greear 2012-04-23 3859 struct ieee80211_vif *vif, int sset); e352114fd6 Ben Greear 2012-04-23 3860 void (*get_et_stats)(struct ieee80211_hw *hw, e352114fd6 Ben Greear 2012-04-23 3861 struct ieee80211_vif *vif, e352114fd6 Ben Greear 2012-04-23 3862 struct ethtool_stats *stats, u64 *data); e352114fd6 Ben Greear 2012-04-23 3863 void (*get_et_strings)(struct ieee80211_hw *hw, e352114fd6 Ben Greear 2012-04-23 3864 struct ieee80211_vif *vif, e352114fd6 Ben Greear 2012-04-23 3865 u32 sset, u8 *data); a1845fc7c5 Johannes Berg 2012-06-27 3866 a1845fc7c5 Johannes Berg 2012-06-27 3867 void (*mgd_prepare_tx)(struct ieee80211_hw *hw, d4e36e5554 Ilan Peer 2018-04-20 3868 struct ieee80211_vif *vif, d4e36e5554 Ilan Peer 2018-04-20 3869 u16 duration); c3645eac47 Michal Kazior 2012-06-26 3870 ee10f2c779 Arik Nemtsov 2014-06-11 3871 void (*mgd_protect_tdls_discover)(struct ieee80211_hw *hw, ee10f2c779 Arik Nemtsov 2014-06-11 3872 struct ieee80211_vif *vif); ee10f2c779 Arik Nemtsov 2014-06-11 3873 c3645eac47 Michal Kazior 2012-06-26 3874 int (*add_chanctx)(struct ieee80211_hw *hw, c3645eac47 Michal Kazior 2012-06-26 3875 struct ieee80211_chanctx_conf *ctx); c3645eac47 Michal Kazior 2012-06-26 3876 void (*remove_chanctx)(struct ieee80211_hw *hw, c3645eac47 Michal Kazior 2012-06-26 3877 struct ieee80211_chanctx_conf *ctx); c3645eac47 Michal Kazior 2012-06-26 3878 void (*change_chanctx)(struct ieee80211_hw *hw, c3645eac47 Michal Kazior 2012-06-26 3879 struct ieee80211_chanctx_conf *ctx, c3645eac47 Michal Kazior 2012-06-26 3880 u32 changed); c3645eac47 Michal Kazior 2012-06-26 3881 int (*assign_vif_chanctx)(struct ieee80211_hw *hw, c3645eac47 Michal Kazior 2012-06-26 3882 struct ieee80211_vif *vif, c3645eac47 Michal Kazior 2012-06-26 3883 struct ieee80211_chanctx_conf *ctx); c3645eac47 Michal Kazior 2012-06-26 3884 void (*unassign_vif_chanctx)(struct ieee80211_hw *hw, c3645eac47 Michal Kazior 2012-06-26 3885 struct ieee80211_vif *vif, c3645eac47 Michal Kazior 2012-06-26 3886 struct ieee80211_chanctx_conf *ctx); 1a5f0c13d1 Luciano Coelho 2014-05-23 3887 int (*switch_vif_chanctx)(struct ieee80211_hw *hw, 1a5f0c13d1 Luciano Coelho 2014-05-23 3888 struct ieee80211_vif_chanctx_switch *vifs, 1a5f0c13d1 Luciano Coelho 2014-05-23 3889 int n_vifs, 1a5f0c13d1 Luciano Coelho 2014-05-23 3890 enum ieee80211_chanctx_switch_mode mode); 9214ad7f9a Johannes Berg 2012-11-06 3891 cf2c92d840 Eliad Peller 2014-11-04 3892 void (*reconfig_complete)(struct ieee80211_hw *hw, cf2c92d840 Eliad Peller 2014-11-04 3893 enum ieee80211_reconfig_type reconfig_type); a65240c101 Johannes Berg 2013-01-14 3894 a65240c101 Johannes Berg 2013-01-14 3895 #if IS_ENABLED(CONFIG_IPV6) a65240c101 Johannes Berg 2013-01-14 3896 void (*ipv6_addr_change)(struct ieee80211_hw *hw, a65240c101 Johannes Berg 2013-01-14 3897 struct ieee80211_vif *vif, a65240c101 Johannes Berg 2013-01-14 3898 struct inet6_dev *idev); a65240c101 Johannes Berg 2013-01-14 3899 #endif 73da7d5bab Simon Wunderlich 2013-07-11 3900 void (*channel_switch_beacon)(struct ieee80211_hw *hw, 73da7d5bab Simon Wunderlich 2013-07-11 3901 struct ieee80211_vif *vif, 73da7d5bab Simon Wunderlich 2013-07-11 3902 struct cfg80211_chan_def *chandef); 6d027bcc8a Luciano Coelho 2014-10-08 3903 int (*pre_channel_switch)(struct ieee80211_hw *hw, 6d027bcc8a Luciano Coelho 2014-10-08 3904 struct ieee80211_vif *vif, 6d027bcc8a Luciano Coelho 2014-10-08 3905 struct ieee80211_channel_switch *ch_switch); 55fff50113 Johannes Berg 2013-08-19 3906 f1d65583bc Luciano Coelho 2014-10-08 3907 int (*post_channel_switch)(struct ieee80211_hw *hw, f1d65583bc Luciano Coelho 2014-10-08 3908 struct ieee80211_vif *vif); f1d65583bc Luciano Coelho 2014-10-08 3909 55fff50113 Johannes Berg 2013-08-19 3910 int (*join_ibss)(struct ieee80211_hw *hw, struct ieee80211_vif *vif); 55fff50113 Johannes Berg 2013-08-19 3911 void (*leave_ibss)(struct ieee80211_hw *hw, struct ieee80211_vif *vif); 2439ca0402 Maxim Altshul 2016-08-04 3912 u32 (*get_expected_throughput)(struct ieee80211_hw *hw, 2439ca0402 Maxim Altshul 2016-08-04 3913 struct ieee80211_sta *sta); 5b3dc42b1b Felix Fietkau 2014-10-26 3914 int (*get_txpower)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 5b3dc42b1b Felix Fietkau 2014-10-26 3915 int *dbm); a7a6bdd067 Arik Nemtsov 2014-11-09 3916 a7a6bdd067 Arik Nemtsov 2014-11-09 3917 int (*tdls_channel_switch)(struct ieee80211_hw *hw, a7a6bdd067 Arik Nemtsov 2014-11-09 3918 struct ieee80211_vif *vif, a7a6bdd067 Arik Nemtsov 2014-11-09 3919 struct ieee80211_sta *sta, u8 oper_class, a7a6bdd067 Arik Nemtsov 2014-11-09 3920 struct cfg80211_chan_def *chandef, 8a4d32f30d Arik Nemtsov 2014-11-09 3921 struct sk_buff *tmpl_skb, u32 ch_sw_tm_ie); a7a6bdd067 Arik Nemtsov 2014-11-09 3922 void (*tdls_cancel_channel_switch)(struct ieee80211_hw *hw, a7a6bdd067 Arik Nemtsov 2014-11-09 3923 struct ieee80211_vif *vif, a7a6bdd067 Arik Nemtsov 2014-11-09 3924 struct ieee80211_sta *sta); 8a4d32f30d Arik Nemtsov 2014-11-09 3925 void (*tdls_recv_channel_switch)(struct ieee80211_hw *hw, 8a4d32f30d Arik Nemtsov 2014-11-09 3926 struct ieee80211_vif *vif, 8a4d32f30d Arik Nemtsov 2014-11-09 3927 struct ieee80211_tdls_ch_sw_params *params); ba8c3d6f16 Felix Fietkau 2015-03-27 3928 e7881bd594 Johannes Berg 2017-12-19 3929 void (*wake_tx_queue)(struct ieee80211_hw *hw, e7881bd594 Johannes Berg 2017-12-19 3930 struct ieee80211_txq *txq); f59374eb42 Sara Sharon 2016-03-02 3931 void (*sync_rx_queues)(struct ieee80211_hw *hw); 708d50edb1 Ayala Beker 2016-09-20 3932 708d50edb1 Ayala Beker 2016-09-20 3933 int (*start_nan)(struct ieee80211_hw *hw, 708d50edb1 Ayala Beker 2016-09-20 3934 struct ieee80211_vif *vif, 708d50edb1 Ayala Beker 2016-09-20 3935 struct cfg80211_nan_conf *conf); 708d50edb1 Ayala Beker 2016-09-20 3936 int (*stop_nan)(struct ieee80211_hw *hw, 708d50edb1 Ayala Beker 2016-09-20 3937 struct ieee80211_vif *vif); 5953ff6d6a Ayala Beker 2016-09-20 3938 int (*nan_change_conf)(struct ieee80211_hw *hw, 5953ff6d6a Ayala Beker 2016-09-20 3939 struct ieee80211_vif *vif, 5953ff6d6a Ayala Beker 2016-09-20 3940 struct cfg80211_nan_conf *conf, u32 changes); 167e33f4f6 Ayala Beker 2016-09-20 3941 int (*add_nan_func)(struct ieee80211_hw *hw, 167e33f4f6 Ayala Beker 2016-09-20 3942 struct ieee80211_vif *vif, 167e33f4f6 Ayala Beker 2016-09-20 3943 const struct cfg80211_nan_func *nan_func); 167e33f4f6 Ayala Beker 2016-09-20 3944 void (*del_nan_func)(struct ieee80211_hw *hw, 167e33f4f6 Ayala Beker 2016-09-20 3945 struct ieee80211_vif *vif, 167e33f4f6 Ayala Beker 2016-09-20 3946 u8 instance_id); 9739fe29a2 Sara Sharon 2018-09-05 3947 bool (*can_aggregate_in_amsdu)(struct ieee80211_hw *hw, 9739fe29a2 Sara Sharon 2018-09-05 3948 struct sk_buff *head, 9739fe29a2 Sara Sharon 2018-09-05 3949 struct sk_buff *skb); bc847970f4 Pradeep Kumar Chitrapu 2018-10-03 3950 int (*get_ftm_responder_stats)(struct ieee80211_hw *hw, bc847970f4 Pradeep Kumar Chitrapu 2018-10-03 3951 struct ieee80211_vif *vif, bc847970f4 Pradeep Kumar Chitrapu 2018-10-03 3952 struct cfg80211_ftm_responder_stats *ftm_stats); cee7013be9 Johannes Berg 2018-10-16 3953 int (*start_pmsr)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, cee7013be9 Johannes Berg 2018-10-16 3954 struct cfg80211_pmsr_request *request); cee7013be9 Johannes Berg 2018-10-16 3955 void (*abort_pmsr)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, cee7013be9 Johannes Berg 2018-10-16 3956 struct cfg80211_pmsr_request *request); f0706e828e Jiri Benc 2007-05-05 @3957 }; f0706e828e Jiri Benc 2007-05-05 3958 :::::: The code at line 3957 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
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 294a8a3..c637d28 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -1886,6 +1886,13 @@ struct ieee80211_sta_rates { * @support_p2p_ps: indicates whether the STA supports P2P PS mechanism or not. * @max_rc_amsdu_len: Maximum A-MSDU size in bytes recommended by rate control. * @max_tid_amsdu_len: Maximum A-MSDU size in bytes for this TID + * @power: indicates the tx power, in dBm, to be used when sending data frames + * to the STA. + * @type: In particular if TPC %type is NL80211_TX_POWER_LIMITED then tx power + * will be less than or equal to specified from userspace, whereas if TPC + * %type is NL80211_TX_POWER_AUTOMATIC then it indicates default tx power. + * NL80211_TX_POWER_FIXED is not a valid configuration option for + * per peer TPC. * @txq: per-TID data TX queues (if driver uses the TXQ abstraction); note that * the last entry (%IEEE80211_NUM_TIDS) is used for non-data frames */ @@ -1928,6 +1935,10 @@ struct ieee80211_sta { bool support_p2p_ps; u16 max_rc_amsdu_len; u16 max_tid_amsdu_len[IEEE80211_NUM_TIDS]; + struct { + s16 power; + enum nl80211_tx_power_setting type; + } txpwr; struct ieee80211_txq *txq[IEEE80211_NUM_TIDS + 1]; @@ -3735,6 +3746,9 @@ struct ieee80211_ops { #endif void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, enum sta_notify_cmd, struct ieee80211_sta *sta); + int (*sta_set_txpwr)(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + struct ieee80211_sta *sta); int (*sta_state)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct ieee80211_sta *sta, enum ieee80211_sta_state old_state, diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 80d8ebc..72d0670 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -1417,6 +1417,15 @@ static int sta_apply_parameters(struct ieee80211_local *local, if (params->listen_interval >= 0) sta->listen_interval = params->listen_interval; + if (params->sta_modify_mask & STATION_PARAM_APPLY_STA_TXPOWER) { + sta->sta.txpwr.type = params->txpwr.type; + if (params->txpwr.type == NL80211_TX_POWER_LIMITED) + sta->sta.txpwr.power = params->txpwr.power; + ret = drv_sta_set_txpwr(local, sdata, sta); + if (ret) + return ret; + } + if (params->supported_rates) { ieee80211_parse_bitrates(&sdata->vif.bss_conf.chandef, sband, params->supported_rates, diff --git a/net/mac80211/driver-ops.c b/net/mac80211/driver-ops.c index bb886e7..839c002 100644 --- a/net/mac80211/driver-ops.c +++ b/net/mac80211/driver-ops.c @@ -138,6 +138,27 @@ int drv_sta_state(struct ieee80211_local *local, return ret; } +__must_check +int drv_sta_set_txpwr(struct ieee80211_local *local, + struct ieee80211_sub_if_data *sdata, + struct sta_info *sta) +{ + int ret = -EOPNOTSUPP; + + might_sleep(); + + sdata = get_bss_sdata(sdata); + if (!check_sdata_in_driver(sdata)) + return -EIO; + + trace_drv_sta_set_txpwr(local, sdata, &sta->sta); + if (local->ops->sta_set_txpwr) + ret = local->ops->sta_set_txpwr(&local->hw, &sdata->vif, + &sta->sta); + trace_drv_return_int(local, ret); + return ret; +} + void drv_sta_rc_update(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata, struct ieee80211_sta *sta, u32 changed) diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h index ba3c07b..2cc5bb2 100644 --- a/net/mac80211/driver-ops.h +++ b/net/mac80211/driver-ops.h @@ -529,6 +529,11 @@ int drv_sta_state(struct ieee80211_local *local, enum ieee80211_sta_state old_state, enum ieee80211_sta_state new_state); +__must_check +int drv_sta_set_txpwr(struct ieee80211_local *local, + struct ieee80211_sub_if_data *sdata, + struct sta_info *sta); + void drv_sta_rc_update(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata, struct ieee80211_sta *sta, u32 changed); diff --git a/net/mac80211/trace.h b/net/mac80211/trace.h index 35ea0dc..c86e42a 100644 --- a/net/mac80211/trace.h +++ b/net/mac80211/trace.h @@ -828,6 +828,36 @@ TRACE_EVENT(drv_sta_state, ) ); +TRACE_EVENT(drv_sta_set_txpwr, + TP_PROTO(struct ieee80211_local *local, + struct ieee80211_sub_if_data *sdata, + struct ieee80211_sta *sta), + + TP_ARGS(local, sdata, sta), + + TP_STRUCT__entry( + LOCAL_ENTRY + VIF_ENTRY + STA_ENTRY + __field(s16, txpwr) + __field(u8, type) + ), + + TP_fast_assign( + LOCAL_ASSIGN; + VIF_ASSIGN; + STA_ASSIGN; + __entry->txpwr = sta->txpwr.power; + __entry->type = sta->txpwr.type; + ), + + TP_printk( + LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " txpwr: %d type %d", + LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, + __entry->txpwr, __entry->type + ) +); + TRACE_EVENT(drv_sta_rc_update, TP_PROTO(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata,