Lines Matching +full:enforce +full:- +full:video +full:- +full:mode
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * mac80211 <-> driver interface
5 * Copyright 2002-2005, Devicescape Software, Inc.
6 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz>
7 * Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net>
8 * Copyright 2013-2014 Intel Mobile Communications GmbH
9 * Copyright (C) 2015 - 2017 Intel Deutschland GmbH
10 * Copyright (C) 2018 - 2025 Intel Corporation
31 * only partial functionality in hard- or firmware. This document
32 * defines the interface between mac80211 and low-level hardware
40 * called in hardware interrupt context. The low-level driver must not call any
42 * call, the low-level driver should first ACK the interrupt and perform the
47 * use the non-IRQ-safe functions!
100 * Intermediate queues (struct ieee80211_txq) are kept per-sta per-tid, with
101 * another per-sta for non-data/non-mgmt and bufferable management frames, and
102 * a single per-vif queue for multicast data frames.
104 * The driver is expected to initialize its private per-queue data for stations
149 * enum ieee80211_max_queues - maximum number of queues
156 IEEE80211_MAX_QUEUE_MAP = BIT(IEEE80211_MAX_QUEUES) - 1,
162 * enum ieee80211_ac_numbers - AC numbers as used in mac80211
164 * @IEEE80211_AC_VI: video
176 * struct ieee80211_tx_queue_params - transmit queue configuration
183 * 2^n-1 in the range 1..32767]
187 * @uapsd: is U-APSD mode enabled for the queue
210 * enum ieee80211_chanctx_change - change flag for channel context
233 * struct ieee80211_chan_req - A channel "request"
244 * struct ieee80211_chanctx_conf - channel context that vifs may be tuned to
246 * This is the driver-visible part. The ieee80211_chanctx
277 * enum ieee80211_chanctx_switch_mode - channel context switch mode
285 * implement this as an on-the-fly chandef switch of the existing
296 * struct ieee80211_vif_chanctx_switch - vif chanctx switch information
316 * enum ieee80211_bss_change - BSS change notification flags
330 * reason (IBSS and managed mode)
339 * that it is only ever disabled for station mode.
341 * @BSS_CHANGED_SSID: SSID changed for this BSS (AP and IBSS mode)
342 * @BSS_CHANGED_AP_PROBE_RESP: Probe Response changed for this BSS (AP mode)
343 * @BSS_CHANGED_PS: PS changed for this BSS (STA mode)
353 * @BSS_CHANGED_MU_GROUPS: VHT MU-MIMO group id or user position changed
358 * functionality changed for this BSS (AP mode).
417 * enum ieee80211_event_type - event to be notified to the low level driver
433 * enum ieee80211_rssi_event_data - relevant when event type is %RSSI_EVENT
443 * struct ieee80211_rssi_event - data attached to an %RSSI_EVENT
451 * enum ieee80211_mlme_event_data - relevant when event type is %MLME_EVENT
465 * enum ieee80211_mlme_event_status - relevant when event type is %MLME_EVENT
477 * struct ieee80211_mlme_event - data attached to an %MLME_EVENT
489 * struct ieee80211_ba_event - data attached for BlockAck related events
501 * struct ieee80211_event - event to be sent to the driver
518 * struct ieee80211_mu_group_data - STA's VHT MU-MIMO group data
520 * This structure describes the group id data of VHT MU-MIMO
522 * @membership: 64 bits array - a bit is set if station is member of the group
531 * struct ieee80211_ftm_responder_params - FTM responder parameters
546 * struct ieee80211_fils_discovery - FILS discovery parameters from
547 * IEEE Std 802.11ai-2016, Annex C.3 MIB detail.
549 * @min_interval: Minimum packet interval in TUs (0 - 10000)
550 * @max_interval: Maximum packet interval in TUs (0 - 10000)
572 * struct ieee80211_parsed_tpe - parsed transmit power envelope information
591 * struct ieee80211_bss_conf - holds the BSS's changing parameters
602 * @link_id: link ID, or 0 for non-MLO
609 * mode only, set if the AP advertises TWT responder role)
611 * mode only, set if the AP advertises TWT responder role)
618 * valid in station mode only if after the driver was notified
619 * with the %BSS_CHANGED_BEACON_INFO flag, will be non-zero then.
642 * @mcast_rate: per-band multicast rate index + 1 (0: disabled)
645 * @chanreq: Channel request for this BSS -- the hardware might be
647 * @mu_group: VHT MU-MIMO group membership data
648 * @ht_operation_mode: HT operation mode like in &struct ieee80211_ht_operation.
661 * @qos: This is a QoS-enabled BSS.
662 * @hidden_ssid: The SSID of the current vif is hidden. Only valid in AP-mode.
686 * if MBSSID is enabled. This pointer is RCU-protected due to CSA finish
710 * @mu_mimo_owner: indicates interface owns MU-MIMO capability
712 * when it is not assigned. This pointer is RCU-protected due to the TX
718 * @ht_ldpc: in AP mode, indicates interface has HT LDPC capability.
719 * @vht_ldpc: in AP mode, indicates interface has VHT LDPC capability.
720 * @he_ldpc: in AP mode, indicates interface has HE LDPC capability.
721 * @vht_su_beamformer: in AP mode, does this BSS support operation as an VHT SU
723 * @vht_su_beamformee: in AP mode, does this BSS support operation as an VHT SU
725 * @vht_mu_beamformer: in AP mode, does this BSS support operation as an VHT MU
727 * @vht_mu_beamformee: in AP mode, does this BSS support operation as an VHT MU
729 * @he_su_beamformer: in AP-mode, does this BSS support operation as an HE SU
731 * @he_su_beamformee: in AP-mode, does this BSS support operation as an HE SU
733 * @he_mu_beamformer: in AP-mode, does this BSS support operation as an HE MU
736 * (non-AP STA) of an HE TB PPDU on an RU that spans the entire PPDU
738 * @eht_su_beamformer: in AP-mode, does this BSS enable operation as an EHT SU
740 * @eht_su_beamformee: in AP-mode, does this BSS enable operation as an EHT SU
742 * @eht_mu_beamformer: in AP-mode, does this BSS enable operation as an EHT MU
744 * @eht_80mhz_full_bw_ul_mumimo: in AP-mode, does this BSS support the
747 * @eht_disable_mcs15: disable EHT-MCS 15 reception capability.
748 * @bss_param_ch_cnt: in BSS-mode, the BSS params change count. This
751 * @bss_param_ch_cnt_link_id: in BSS-mode, the link_id to which the beacon
867 * enum mac80211_tx_info_flags - flags to describe transmission information/status
876 * assign sequence numbers to QoS-data frames but cannot do so correctly
877 * for non-QoS-data and management frames because beacons need them from
881 * 802.11-2007 7.1.3.4.1 paragraph 3. This flag will always be set for
888 * @IEEE80211_TX_CTL_AMPDU: this frame should be sent as part of an A-MPDU
891 * because the destination STA was in powersave mode. Note that to
909 * off-channel operation.
917 * frame (PS-Poll or uAPSD) or a non-bufferable MMPDU and must
918 * be sent although the station is in powersave mode.
933 * @IEEE80211_TX_CTL_STBC: Enables Space-Time Block Coding (STBC) for this
936 * the off-channel channel when a remain-on-channel offload is done
937 * in hardware -- normal packets still flow and are expected to be
949 * PS-Poll responses.
959 * This flag must not be set for frames that don't request no-ack
1004 * enum mac80211_tx_control_flags - flags to describe transmit control
1009 * frame (PS-Poll or uAPSD).
1011 * @IEEE80211_TX_CTRL_AMSDU: This frame is an A-MSDU frame
1034 * These flags are used in tx_info->control.flags.
1057 * enum mac80211_tx_status_flags - flags to describe transmit status
1061 * These flags are used in tx_info->status.flags.
1081 * enum mac80211_rate_control_flags - per-rate flags set by the
1088 * @IEEE80211_TX_RC_USE_CTS_PROTECT: CTS-to-self protection is required.
1095 * Greenfield mode.
1135 * struct ieee80211_tx_rate - rate selection/status
1141 * A value of -1 for @idx indicates an invalid rate and, if used
1153 * { 3, 2 }, { 2, 2 }, { 1, 4 }, { -1, 0 }, { -1, 0 }
1161 * { 3, 2 }, { 2, 2 }, { 1, 1 }, { -1, 0 } ...
1176 return rate->idx >= 0 && rate->count > 0;
1183 WARN_ON((nss - 1) & ~0x7);
1184 rate->idx = ((nss - 1) << 4) | mcs;
1190 return rate->idx & 0xF;
1196 return (rate->idx >> 4) + 1;
1200 * struct ieee80211_tx_info - skb transmit information
1202 * This structure is placed in skb->cb for three uses:
1203 * (1) mac80211 TX control - mac80211 tells the driver what to do
1205 * (3) TX status information - driver tells mac80211 what happened
1314 * in increments of 4us and clamp the maximum to 2**12-1
1316 info->tx_time_est = min_t(u16, tx_time_est, 4095) >> 2;
1317 return info->tx_time_est << 2;
1323 return info->tx_time_est << 2;
1327 * struct ieee80211_rate_status - mrr stage for status path
1334 * @tx_power_idx An idx into the ieee80211_hw->tx_power_levels list of the
1345 * struct ieee80211_tx_status - extended tx status info for rate control
1369 * struct ieee80211_scan_ies - descriptors for different blocks of IEs
1390 return (struct ieee80211_tx_info *)skb->cb;
1395 return (struct ieee80211_rx_status *)skb->cb;
1399 * ieee80211_tx_info_clear_status - clear TX status
1424 info->status.rates[i].count = 0;
1425 memset_after(&info->status, 0, rates);
1430 * enum mac80211_rx_flags - receive flags
1446 * de-duplication by itself.
1452 * field) is valid if this field is non-zero, and the position
1456 * was received. This is useful in monitor mode and for proper IBSS
1469 * Valid only for data frames (mainly A-MPDU)
1470 * @RX_FLAG_AMPDU_DETAILS: A-MPDU details are known, in particular the reference
1472 * each A-MPDU
1474 * subframes of a single A-MPDU
1475 * @RX_FLAG_AMPDU_IS_LAST: this subframe is the last subframe of the A-MPDU
1488 * @RX_FLAG_AMSDU_MORE: Some drivers may prefer to report separate A-MSDU
1490 * All, but the last MSDU from an A-MSDU should have this flag set. E.g.
1491 * if an A-MSDU has 3 frames, the first 2 must have the flag set, while
1493 * deal with retransmission/duplication recovery properly since A-MSDU
1495 * either regular MSDU or singly A-MSDUs. Subframes must not be
1498 * skb->data (before the 802.11 header).
1508 * @RX_FLAG_AMPDU_EOF_BIT: Value of the EOF bit in the A-MPDU delimiter for this
1514 * - DATA3_DATA_MCS
1515 * - DATA3_DATA_DCM
1516 * - DATA3_CODING
1517 * - DATA5_GI
1518 * - DATA5_DATA_BW_RU_ALLOC
1519 * - DATA6_NSTS
1520 * - DATA3_STBC
1525 * @RX_FLAG_RADIOTAP_LSIG: L-SIG radiotap data is present
1527 * the "0-length PSDU" field included there. The value for it is
1570 * enum mac80211_rx_encoding_flags - MCS & bandwidth flags
1574 * @RX_ENC_FLAG_HT_GF: This frame was received in a HT-greenfield transmission,
1579 * @RX_ENC_FLAG_STBC_MASK: STBC 2 bit bitmask. 1 - Nss=1, 2 - Nss=2, 3 - Nss=3
1602 * struct ieee80211_rx_status - receive status
1604 * The low-level driver should provide this information (the subset
1608 * @mactime: value in microseconds of the 64-bit Time Synchronization Function
1620 * for data (other) frames - for those it only affects radiotap reporting.
1627 * @chain_signal: per-chain signal strength, in dBm (unlike @signal, doesn't
1644 * @ampdu_reference: A-MPDU reference number, must be a different value for
1645 * each A-MPDU but the same for each subframe within one A-MPDU
1646 * @zero_length_psdu_type: radiotap type of the 0-length PSDU
1690 return MHZ_TO_KHZ(rx_status->freq) +
1691 (rx_status->freq_offset ? 500 : 0);
1695 * enum ieee80211_conf_flags - configuration flags
1699 * @IEEE80211_CONF_MONITOR: there's a monitor interface present -- use this
1702 * @IEEE80211_CONF_PS: Enable 802.11 power save mode (managed mode only).
1703 * This is the power save mode defined by IEEE 802.11-2007 section 11.2,
1726 * enum ieee80211_conf_changed - denotes which configuration changed
1735 * @IEEE80211_CONF_CHANGE_SMPS: Spatial multiplexing powersave mode changed
1751 * enum ieee80211_smps_mode - spatial multiplexing power save mode
1770 * struct ieee80211_conf - configuration of the device
1797 * @smps_mode: spatial multiplexing powersave mode; note that
1818 * struct ieee80211_channel_switch - holds the channel switch data
1823 * @timestamp: value in microseconds of the 64-bit Time Synchronization
1836 * @link_id: the link ID of the link doing the channel switch, 0 for non-MLO
1849 * enum ieee80211_vif_flags - virtual interface flags
1854 * monitoring on this virtual interface -- i.e. it can monitor
1857 * @IEEE80211_VIF_SUPPORTS_UAPSD: The device can do U-APSD for this
1860 * only valid for managed/station mode interfaces.
1869 * handle OFDMA (downlink and trigger for uplink) on a per-AP basis.
1886 * enum ieee80211_offload_flags - virtual interface offload flags
1891 * @IEEE80211_OFFLOAD_ENCAP_4ADDR: support 4-address mode encapsulation offload
1904 * struct ieee80211_vif_cfg - interface configuration
1908 * @ps: power-save mode (STA only). This flag is NOT affected by
1911 * @eml_cap: EML capabilities as described in P802.11be_D4.1 Figure 9-1001j.
1913 * P802.11be_D4.1 Figure 9-1001i.
1915 * Figure 9-1001k
1923 * @ssid: The SSID of the current vif. Valid in AP and IBSS mode.
1929 * @ap_addr: AP MLD address, or BSSID for non-MLO connections
1930 * (station mode only)
1954 * struct ieee80211_neg_ttlm - negotiated TID to link map info
1969 * enum ieee80211_neg_ttlm_res - return value for negotiated TTLM handling
1981 * struct ieee80211_vif - per-interface data
1990 * @link_conf: in case of MLD, the per-link BSS configuration,
1992 * @valid_links: bitmap of valid links, or 0 for non-MLO.
1993 * @active_links: The bitmap of active links, or 0 for non-MLO.
1998 * 0 for non-MLO.
2002 * 0 for non-MLO.
2009 * interface, i.e. a GO or p2p-sta respectively
2011 * vif. mac80211 initializes this to hw->netdev_features, and the driver
2024 * @cab_queue: content-after-beacon (DTIM beacon really) queue, AP mode only
2035 * @offload_flags: 802.3 -> 802.11 enapsulation offload flags, see
2070 * ieee80211_vif_usable_links - Return the usable links for the vif
2076 return vif->valid_links & ~vif->dormant_links;
2080 * ieee80211_vif_is_mld - Returns true iff the vif is an MLD one
2087 return vif->valid_links != 0;
2091 * ieee80211_vif_link_active - check if a given link is active
2102 return vif->active_links & BIT(link_id);
2106 for (link_id = 0; link_id < ARRAY_SIZE((vif)->link_conf); link_id++) \
2107 if ((!(vif)->active_links || \
2108 (vif)->active_links & BIT(link_id)) && \
2114 return vif->type == NL80211_IFTYPE_MESH_POINT;
2120 * wdev_to_ieee80211_vif - return a vif struct from a wdev
2133 * ieee80211_vif_to_wdev - return a wdev struct from a vif
2146 return lockdep_is_held(&ieee80211_vif_to_wdev(vif)->wiphy->mtx);
2150 rcu_dereference_protected((vif)->link_conf[link_id], \
2154 rcu_dereference_check((vif)->link_conf[link_id], \
2158 * enum ieee80211_key_flags - key flags
2201 * @IEEE80211_KEY_FLAG_SPP_AMSDU: SPP A-MSDUs can be used with this key
2202 * (set by mac80211 from the sta->spp_amsdu flag)
2220 * struct ieee80211_key_conf - key information
2232 * @keyidx: the key index (0-7)
2234 * @key: key material. For ALG_TKIP the key is encoded as a 256-bit (32 byte)
2236 * - Temporal Encryption Key (128 bits)
2237 * - Temporal Authenticator Tx MIC Key (64 bits)
2238 * - Temporal Authenticator Rx MIC Key (64 bits)
2241 * @link_id: the link ID, 0 for non-MLO, or -1 for pairwise keys
2262 * struct ieee80211_key_seq - key sequence counter
2273 * @hw: data for HW-only (e.g. cipher scheme) keys
2301 * enum set_key_cmd - key command
2314 * enum ieee80211_sta_state - station state
2333 * enum ieee80211_sta_rx_bandwidth - station RX bandwidth
2355 * struct ieee80211_sta_rates - station rate selection table
2359 * Overriding entries per-packet is possible by using cb tx control.
2373 * struct ieee80211_sta_txpwr - station txpower configuration
2391 * struct ieee80211_sta_aggregates - info that is aggregated from active links
2393 * Used for any per-link data that needs to be aggregated and updated in the
2396 * @max_amsdu_len: indicates the maximal length of an A-MSDU in bytes.
2401 * A-MSDU maximal size is min(max_amsdu_len, 4065) bytes.
2402 * * If the skb is not part of a BA agreement, the A-MSDU maximal
2406 * driver. This is defined by the spec (IEEE 802.11-2012 section
2408 * @max_rc_amsdu_len: Maximum A-MSDU size in bytes recommended by rate control.
2409 * @max_tid_amsdu_len: Maximum A-MSDU size in bytes for this TID
2419 * struct ieee80211_link_sta - station Link specific info
2424 * @addr: MAC address of the Link STA. For non-MLO STA this is same as the addr
2428 * @smps_mode: current SMPS mode (off, static or dynamic)
2436 * @agg: per-link data for multi-link aggregation
2439 * station can receive at the moment, changed by operating mode
2468 * struct ieee80211_sta - station table entry
2471 * communicating with. Since stations are RCU-managed in
2499 * A-MSDU. Taken from the Extended Capabilities element. 0 means
2506 * @txq: per-TID data TX queues; note that the last entry (%IEEE80211_NUM_TIDS)
2507 * is used for non-data frames
2519 * @valid_links: bitmap of valid links, or 0 for non-MLO
2520 * @spp_amsdu: indicates whether the STA uses SPP A-MSDU or not.
2562 rcu_dereference_protected((sta)->link[link_id], \
2566 rcu_dereference_check((sta)->link[link_id], \
2570 for (link_id = 0; link_id < ARRAY_SIZE((sta)->link); link_id++) \
2571 if ((!(vif)->active_links || \
2572 (vif)->active_links & BIT(link_id)) && \
2576 * enum sta_notify_cmd - sta notify command
2589 * struct ieee80211_tx_control - TX control data
2599 * struct ieee80211_txq - Software intermediate tx queue
2602 * @sta: station table entry, %NULL for per-vif queue
2603 * @tid: the TID for this queue (unused for per-vif queue),
2604 * %IEEE80211_NUM_TIDS for non-data (if enabled)
2606 * @drv_priv: driver private area, sized by hw->txq_data_size
2622 * enum ieee80211_hw_flags - hardware flags
2670 * Hardware supports 11n A-MPDU aggregation.
2691 * periodic keep-alives to the AP and probing the AP on beacon loss.
2698 * per-station GTKs as used by IBSS RSN or during fast transition. If
2699 * the device doesn't support per-station GTKs, but can be asked not
2704 * @IEEE80211_HW_AP_LINK_PS: When operating in AP mode the device
2706 * this flag is set mac80211 will not trigger PS mode for connected
2709 * the PS mode of connected stations.
2711 * @IEEE80211_HW_TX_AMPDU_SETUP_IN_HW: The device handles TX A-MPDU session
2725 * be created. It is expected user-space will create vifs as
2729 * crypto algorithms can be done in software - so don't automatically
2734 * @IEEE80211_HW_SUPPORT_FAST_XMIT: The driver/hardware supports fast-xmit,
2738 * @IEEE80211_HW_QUEUE_CONTROL: The driver wants to control per-interface
2757 * @IEEE80211_HW_CHANCTX_STA_CSA: Support 802.11h based channel-switch (CSA)
2771 * @IEEE80211_HW_SUPPORTS_AMSDU_IN_AMPDU: The driver supports receiving A-MSDUs
2772 * within A-MPDU.
2788 * which implies using per-CPU station statistics.
2791 * A-MSDU frames. Requires software tx queueing and fast-xmit support.
2793 * limit the maximum A-MSDU size based on the current tx rate by setting
2797 * skbs, needed for zero-copy software A-MSDU.
2812 * support QoS NDP for AP probing - that's most likely a driver bug.
2820 * but if the rate control is built-in then it must be set by the driver.
2823 * @IEEE80211_HW_STA_MMPDU_TXQ: use the extra non-TID per-station TXQ for all
2827 * @IEEE80211_HW_TX_STATUS_NO_AMPDU_LEN: Driver does not report accurate A-MPDU
2837 * A-MPDU sessions active while rekeying with Extended Key ID.
2865 * @IEEE80211_HW_STRICT: strictly enforce certain things mandated by the spec
2936 * struct ieee80211_hw - hardware information and state
2990 * sub-frames) to be used for A-MPDU block ack receiver
3003 * @max_tx_fragments: maximum number of tx buffers per (A)-MSDU, sum
3004 * of 1 + skb_shinfo(skb)->nr_frags for each skb in the frag_list.
3019 * @units_pos member is set to a non-negative value then the timestamp
3025 * @radiotap_timestamp.accuracy: If non-negative, fills the accuracy in the
3033 * for each access category if it is uAPSD trigger-enabled and delivery-
3036 * that corresponding AC is both trigger- and delivery-enabled. '0' means
3103 return test_bit(flg, hw->flags);
3110 return __set_bit(flg, hw->flags);
3115 * struct ieee80211_scan_request - hw scan request
3128 * struct ieee80211_tdls_ch_sw_params - TDLS channel switch parameters
3130 * @sta: peer this TDLS channel-switch request/response came from
3131 * @chandef: channel referenced in a TDLS channel-switch request
3133 * @status: channel-switch response status
3135 * @switch_time: switch-timing parameter received in the frame
3136 * @switch_timeout: switch-timing parameter received in the frame
3137 * @tmpl_skb: TDLS switch-channel response template
3138 * @ch_sw_tm_ie: offset of the channel-switch timing IE inside @tmpl_skb
3153 * wiphy_to_ieee80211_hw - return a mac80211 driver hw struct from a wiphy
3159 * structure can then access it via hw->priv. Note that mac802111 drivers should
3168 * SET_IEEE80211_DEV - set device for 802.11 hardware
3175 set_wiphy_dev(hw->wiphy, dev);
3179 * SET_IEEE80211_PERM_ADDR - set the permanent MAC address for 802.11 hardware
3186 memcpy(hw->wiphy->perm_addr, addr, ETH_ALEN);
3193 if (WARN_ON_ONCE(c->control.rates[0].idx < 0))
3196 if (c->band >= NUM_NL80211_BANDS)
3199 return &hw->wiphy->bands[c->band]->bitrates[c->control.rates[0].idx];
3206 if (c->control.rts_cts_rate_idx < 0)
3208 return &hw->wiphy->bands[c->band]->bitrates[c->control.rts_cts_rate_idx];
3215 if (c->control.rates[idx + 1].idx < 0)
3217 return &hw->wiphy->bands[c->band]->bitrates[c->control.rates[idx + 1].idx];
3221 * ieee80211_free_txskb - free TX skb
3231 * ieee80211_purge_tx_queue - purge TX skb queue
3262 * the key is now in use, -%EOPNOTSUPP or -%ENOSPC if it couldn't be
3298 * when they are able to replace in-use PTK keys according to the following
3303 at the time of the key deletion (including re-transmits),
3318 * flag. In that case, it will be told about the desired powersave mode
3321 * i.e. when entering and leaving powersave mode. The hardware is required
3325 * %IEEE80211_CONF_PS flag enabled means that the powersave mode defined in
3326 * IEEE 802.11-2007 section 11.2 is enabled. This is not to be confused
3344 * hardware stays awake for a user-specified period of time after sending a
3355 * dynamic PS mode itself. The driver needs to look at the
3361 * Driver informs U-APSD client support by enabling
3362 * %IEEE80211_VIF_SUPPORTS_UAPSD flag. The mode is configured through the
3365 * utilize U-APSD, dynamic powersave is disabled for voip AC and all frames
3368 * Note: U-APSD client mode is not yet supported with
3399 * - a list of information element IDs
3400 * - a list of OUIs for the vendor information element
3414 * the various vendor-assigned IEs with unknown contents (128, 129, 133-136,
3438 * and rationale, please refer to 802.11 (as amended by 802.11n-2009)
3442 * to update the AP about the station's SMPS mode, and will instruct
3443 * the driver to enter the specific mode. It will also announce the
3444 * requested SMPS mode during the association handshake. Hardware
3448 * The default mode will be "automatic", which nl80211/cfg80211
3455 * enter the requested SMPS mode while associated to an HT AP.
3463 * in monitor mode. However, for best CPU usage and power consumption,
3502 * client powersaving, both "legacy" PS (PS-Poll/null data) and uAPSD.
3506 * will not poll with PS-Poll and trigger with uAPSD at the same time.
3516 * stations' powersave transitions. In this mode, mac80211 also doesn't
3517 * handle PS-Poll/uAPSD.
3519 * In the mode without %IEEE80211_HW_AP_LINK_PS, mac80211 will check the
3531 * it can PS-Poll, or it can possibly start a uAPSD service period.
3534 * the station sends a PS-Poll or a uAPSD trigger frame, mac80211
3539 * response to a PS-Poll) also has %IEEE80211_TX_STATUS_EOSP set to
3545 * Additionally, non-bufferable MMPDUs can also be transmitted by
3553 * transmitted to a certain station is out-of-band communication to
3571 * there is more data on other TIDs -- the TIDs to release frames
3575 * If the driver also implement GO mode, where absence periods may
3576 * shorten service periods (or abort PS-Poll responses), it must
3578 * are buffered in the driver -- those must remain buffered to avoid
3589 * Note that if the driver ever buffers frames other than QoS-data
3590 * frames, it must take care to never send a non-QoS-data frame as
3591 * the last frame in a service period, adding a QoS-nulldata frame
3592 * after a non-QoS-data frame if needed.
3599 * assignment of per-interface AC software queues to hardware queues. This
3601 * 1) off-channel transmissions might get stuck behind other frames
3603 * 3) after-DTIM frames could get stuck behind other frames
3627 * after-DTIM queue for AP: 8
3628 * off-channel queue: 9
3638 * vif.cab_queue = 8 // if AP mode, otherwise %IEEE80211_INVAL_HW_QUEUE
3639 * and the second virtual interface with 4-7.
3645 * whenever the queue is not used (i.e. the interface is not in AP mode) if the
3647 * a queue is stopped/woken even if the interface is not in AP mode.
3651 * enum ieee80211_filter_flags - hardware filter flags
3698 * enum ieee80211_ampdu_mlme_action - A-MPDU actions
3743 * struct ieee80211_ampdu_params - AMPDU action parameters
3754 * @amsdu: indicates the peer's ability to receive A-MSDU within A-MPDU.
3770 * enum ieee80211_frame_release_type - frame release reason
3771 * @IEEE80211_FRAME_RELEASE_PSPOLL: frame released for PS-Poll
3773 * frame received on trigger-enabled AC
3781 * enum ieee80211_rate_control_changed - flags to indicate what changed
3785 * information -- for HT20/40 the IEEE80211_HT_CAP_SUP_WIDTH_20_40
3789 * changed (in IBSS mode) due to discovering more information about
3802 * enum ieee80211_roc_type - remain on channel type
3820 * enum ieee80211_reconfig_type - reconfig type
3836 * struct ieee80211_prep_tx_info - prepare TX information
3837 * @duration: if non-zero, hint about the required duration,
3846 * 0 for a non-MLO connection.
3856 * struct ieee80211_ops - callbacks from mac80211 to the driver
3864 * The low-level driver should send the frame out based on
3875 * to avoid acknowledging frames before a non-monitor device
3909 * enabled. Because it is not called for monitor mode devices, @start
3959 * non-MLO connections.
4000 * offloading. The index can be 0-3, or -1 for unsetting it.
4009 * at all but just send them after the SSID -- mac80211 includes the
4021 * @cancel_hw_scan: Ask the low-level tp cancel the active hw scan.
4026 * scan_work after the low-level driver was already suspended.
4048 * @get_stats: Return low-level statistics.
4083 * For non-MLO the callback will be called once for the default bss_conf
4095 * For non-MLO the callback will be called once for the deflink with the
4100 * in AP mode, this callback will not be called when the flag
4112 * isn't safe to use the pointer, not even RCU protected - no RCU grace
4137 * let the driver pre-fill the statistics. The driver can fill most of
4139 * all of them make sense - see the source for which ones are possible.
4145 * accurate, so let the driver pre-fill the statistics. The driver can
4147 * bitmap), but not all of them make sense - see the source for which
4158 * this is only used for IBSS mode BSSID merging and debugging. Is not a
4163 * Currently, this is only used for IBSS mode debugging. Is not a
4174 * with other STAs in the IBSS. This is only used in IBSS mode. This
4180 * This is needed only for IBSS mode and the result of this function is
4182 * Returns non-zero if this device sent the last beacon.
4185 * @get_survey: Return per-channel survey information
4188 * need to set wiphy->rfkill_poll to %true before registration,
4193 * in IEEE 802.11-2007 section 17.3.8.6 and modify ACK timeout
4194 * accordingly; coverage class equals to -1 to enable ACK timeout
4198 * @testmode_cmd: Implement a cfg80211 test mode command. The passed @vif may
4200 * @testmode_dump: Implement a cfg80211 test mode dump. The callback can sleep.
4221 * reject TX/RX mask combinations they cannot support by returning -EINVAL
4226 * @remain_on_channel: Starts an off-channel period on the given channel, must
4229 * offload. Frames to transmit on the off-channel channel are transmitted
4231 * duration (which will always be non-zero) expires, the driver must call
4236 * @cancel_remain_on_channel: Requests that an ongoing off-channel period is
4256 * to release some frames, either for PS-poll or uAPSD.
4259 * the frames being released then it must still set the more-data bit in
4261 * more-data bit must always be set.
4263 * from, for PS-poll it will always have only a single bit set.
4264 * In the case this is used for a PS-poll initiated release, the
4267 * on the TX status (and must report TX status) so that the PS-poll
4269 * responses for a retried PS-poll frame.
4292 * @get_et_sset_count: Ethtool API to get string-set count.
4299 * and perhaps other supported types of ethtool data-sets.
4304 * before associated. In multi-channel scenarios, a virtual interface is
4325 * a TDLS discovery-request, we expect a reply to arrive on the AP's
4327 * setup-response is a direct packet not buffered by the AP.
4329 * discovery-request. The recommended period of protection is at least
4350 * to the mode defined in &ieee80211_chanctx_switch_mode.
4383 * gets a CSA or a userspace initiated channel-switch), allowing
4406 * @tdls_channel_switch: Start channel-switching with a TDLS peer. The driver
4407 * is responsible for continually initiating channel-switching operations
4409 * driver receives a channel-switch request template and the location of
4410 * the switch-timing IE within the template as part of the invocation.
4412 * optionally copy the skb for further re-use.
4413 * @tdls_cancel_channel_switch: Stop channel-switching with a TDLS peer. Both
4415 * @tdls_recv_channel_switch: a TDLS channel-switch related frame (request or
4418 * an ongoing channel-switch operation. In addition, a channel-switch
4420 * switch-timing IE within the template. The skb can only be used within
4444 * aggregating two specific frames in the same A-MSDU. The relation
4446 * skb is always a real frame, head may or may not be an A-MSDU.
4458 * 4-address mode
4484 * new links bitmaps may be 0 if going from/to a non-MLO situation.
4493 * i.e. passed to @sta_add/@sta_state with sta->valid_links not zero.
4503 * if the requested TID-To-Link mapping can be accepted or not.
4505 * modify @ttlm parameter with the suggested TID-to-Link mapping.
4659 * Perform a certain A-MPDU action.
4669 * - ``TX: 1.....7``
4670 * - ``RX: 2....7`` (lost frame #1)
4671 * - ``TX: 8..1...``
4673 * which is invalid since #1 was now re-transmitted well past the
4676 * - ``TX: 1 or``
4677 * - ``TX: 18 or``
4678 * - ``TX: 81``
4781 enum ieee80211_chanctx_switch_mode mode);
4910 * ieee80211_alloc_hw_nm - Allocate a new hardware device
4930 * ieee80211_alloc_hw - Allocate a new hardware device
4951 * ieee80211_register_hw - Register hardware device
4964 * struct ieee80211_tpt_blink - throughput blink description
4975 * enum ieee80211_tpt_led_trigger_flags - throughput trigger flags
4999 * ieee80211_get_tx_led_name - get name of TX LED
5020 * ieee80211_get_rx_led_name - get name of RX LED
5041 * ieee80211_get_assoc_led_name - get name of association LED
5062 * ieee80211_get_radio_led_name - get name of radio LED
5083 * ieee80211_create_tpt_led_trigger - create throughput LED trigger
5086 * @blink_table: the blink table -- needs to be ordered by throughput
5108 * ieee80211_unregister_hw - Unregister a hardware device
5118 * ieee80211_free_hw - free hardware descriptor
5129 * ieee80211_restart_hw - restart hardware completely
5135 * calling the ->start() operation. The driver will need to reset all
5143 * ieee80211_rx_list - receive frame and store processed skbs in a list
5168 * ieee80211_rx_napi - receive frame from NAPI context
5193 * ieee80211_rx - receive frame
5218 * ieee80211_rx_irqsafe - receive frame
5233 * ieee80211_rx_ni - receive frame (in process context)
5254 * ieee80211_sta_ps_transition - PS transition for connected sta
5256 * When operating in AP mode with the %IEEE80211_HW_AP_LINK_PS
5258 * entering/leaving PS mode.
5268 * Return: 0 on success. -EINVAL when the requested PS mode is already set.
5273 * ieee80211_sta_ps_transition_ni - PS transition for connected sta
5298 * ieee80211_sta_pspoll - PS-Poll frame received
5301 * When operating in AP mode with the %IEEE80211_HW_AP_LINK_PS flag set,
5302 * use this function to inform mac80211 that a PS-Poll frame from a
5311 * ieee80211_sta_uapsd_trigger - (potential) U-APSD trigger frame received
5315 * When operating in AP mode with the %IEEE80211_HW_AP_LINK_PS flag set,
5335 * ieee80211_sta_set_buffered - inform mac80211 about driver-buffered frames
5349 * If all frames are released to the station (due to PS-poll or uAPSD)
5366 * ieee80211_get_tx_rates - get the selected transmit rates for a packet
5368 * Call this function in a driver with per-packet rate selection support
5385 * ieee80211_tx_rate_update - transmit rate update callback
5387 * Drivers should call this functions with a non-NULL pub sta
5400 * ieee80211_tx_status_skb - transmit status callback
5419 * ieee80211_tx_status_ext - extended transmit status callback
5436 * ieee80211_tx_status_noskb - transmit status callback without skb
5464 * ieee80211_tx_status_ni - transmit status callback (in process context)
5484 * ieee80211_tx_status_irqsafe - IRQ-safe transmit status callback
5499 * ieee80211_report_low_ack - report non-responding station
5501 * When operating in AP-mode, call this function to report a non-responding
5504 * @sta: the non-responding connected sta
5512 * struct ieee80211_mutable_offsets - mutable beacon offsets
5529 * ieee80211_beacon_get_template - beacon template generation function
5556 * ieee80211_beacon_get_template_ema_index - EMA beacon template generation
5561 * @link_id: the link id to which the beacon belongs (or 0 for a non-MLD AP).
5577 * struct ieee80211_ema_beacons - List of EMA beacons
5594 * ieee80211_beacon_get_template_ema_list - EMA beacon template generation
5597 * @link_id: the link id to which the beacon belongs (or 0 for a non-MLD AP)
5615 * ieee80211_beacon_free_ema_list - free an EMA beacon template list
5624 * ieee80211_beacon_get_tim - beacon generation function
5628 * Set to 0 if invalid (in non-AP modes).
5631 * Set to 0 if invalid (in non-AP modes).
5640 * frame from mac80211 -- it is responsible for calling this function exactly
5653 * ieee80211_beacon_get - beacon generation function
5671 * ieee80211_beacon_update_cntdwn - request mac80211 to decrement the beacon countdown
5673 * @link_id: valid link_id during MLO or 0 for non-MLO
5687 * ieee80211_beacon_set_cntdwn - request mac80211 to set beacon countdown
5700 * ieee80211_csa_finish - notify mac80211 about channel switch
5702 * @link_id: valid link_id during MLO or 0 for non-MLO
5711 * ieee80211_beacon_cntdwn_is_complete - find out if countdown reached 1
5713 * @link_id: valid link_id during MLO or 0 for non-MLO
5721 * ieee80211_color_change_finish - notify mac80211 about color change
5723 * @link_id: valid link_id during MLO or 0 for non-MLO
5732 * ieee80211_proberesp_get - retrieve a Probe Response template
5739 * Can only be called in AP mode.
5747 * ieee80211_pspoll_get - retrieve a PS Poll template
5764 * ieee80211_nullfunc_get - retrieve a nullfunc template
5790 * ieee80211_probereq_get - retrieve a Probe Request template
5808 * ieee80211_rts_get - RTS frame generation function
5817 * hardware/firmware), the low-level driver uses this function to receive
5818 * the next RTS frame from the 802.11 code. The low-level is responsible
5827 * ieee80211_rts_duration - Get the duration field for an RTS frame
5834 * the duration field, the low-level driver uses this function to receive
5835 * the duration field value in little-endian byteorder.
5844 * ieee80211_ctstoself_get - CTS-to-self frame generation function
5847 * @frame: pointer to the frame that is going to be protected by the CTS-to-self.
5850 * @cts: The buffer where to store the CTS-to-self frame.
5852 * If the CTS-to-self frames are generated by the host system (i.e., not in
5853 * hardware/firmware), the low-level driver uses this function to receive
5854 * the next CTS-to-self frame from the 802.11 code. The low-level is responsible
5855 * for calling this function before and CTS-to-self frame is needed.
5864 * ieee80211_ctstoself_duration - Get the duration field for a CTS-to-self frame
5867 * @frame_len: the length of the frame that is going to be protected by the CTS-to-self.
5870 * If the CTS-to-self is generated in firmware, but the host system must provide
5871 * the duration field, the low-level driver uses this function to receive
5872 * the duration field value in little-endian byteorder.
5882 * ieee80211_generic_frame_duration - Calculate the duration field for a frame
5901 * ieee80211_get_buffered_bc - accessing buffered broadcast and multicast frames
5908 * memory. The low-level driver uses this function to fetch next buffered
5915 * generated with ieee80211_beacon_get() and the low-level driver must thus
5917 * NULL if the previous generated beacon was not DTIM, so the low-level driver
5925 * ieee80211_get_tkip_p1k_iv - get a TKIP phase 1 key for IV32
5937 * ieee80211_get_tkip_p1k - get a TKIP phase 1 key
5950 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
5951 const u8 *data = (u8 *)hdr + ieee80211_hdrlen(hdr->frame_control);
5958 * ieee80211_get_tkip_rx_p1k - get a TKIP phase 1 key for RX
5972 * ieee80211_get_tkip_p2k - get a TKIP phase 2 key
5986 * ieee80211_tkip_add_iv - write TKIP IV and Ext. IV to pos
6001 * ieee80211_get_key_rx_seq - get key RX sequence counter
6004 * @tid: The TID, or -1 for the management frame value (CCMP/GCMP only);
6005 * the value on TID 0 is also used for non-QoS frames. For
6020 * ieee80211_set_key_rx_seq - set key RX sequence counter
6023 * @tid: The TID, or -1 for the management frame value (CCMP/GCMP only);
6024 * the value on TID 0 is also used for non-QoS frames. For
6040 * ieee80211_gtk_rekey_add - add a GTK key from rekeying during WoWLAN
6046 * @link_id: the link id of the key or -1 for non-MLO
6054 * mac80211-owned memory. In case of errors, the function returns an
6076 * ieee80211_gtk_rekey_notify - notify userspace supplicant of rekeying
6086 * ieee80211_key_mic_failure - increment MIC failure counter for the key
6096 * ieee80211_key_replay - increment replay counter for the key
6106 * ieee80211_wake_queue - wake specific queue
6115 * ieee80211_stop_queue - stop specific queue
6124 * ieee80211_queue_stopped - test status of the queue
6136 * ieee80211_stop_queues - stop all queues
6144 * ieee80211_wake_queues - wake all queues
6152 * ieee80211_scan_completed - completed hardware scan
6166 * ieee80211_sched_scan_results - got results from scheduled scan
6176 * ieee80211_sched_scan_stopped - inform that the scheduled scan has stopped
6188 * enum ieee80211_interface_iteration_flags - interface iteration flags
6193 * haven't been re-added to the driver yet.
6195 * interfaces, even if they haven't been re-added to the driver yet.
6209 * ieee80211_iterate_interfaces - iterate interfaces
6227 * ieee80211_iterate_active_interfaces - iterate active interfaces
6253 * ieee80211_iterate_active_interfaces_atomic - iterate active interfaces
6274 * ieee80211_iterate_active_interfaces_mtx - iterate active interfaces
6293 * ieee80211_iterate_stations_atomic - iterate stations
6310 * ieee80211_iterate_stations_mtx - iterate stations
6327 * ieee80211_queue_work - add work onto the mac80211 workqueue
6338 * ieee80211_queue_delayed_work - add work onto the mac80211 workqueue
6352 * ieee80211_refresh_tx_agg_session_timer - Refresh a tx agg session timer.
6366 * ieee80211_start_tx_ba_session - Start a tx Block Ack session.
6381 * ieee80211_start_tx_ba_cb_irqsafe - low level driver ready to aggregate.
6394 * ieee80211_stop_tx_ba_session - Stop a Block Ack session.
6407 * ieee80211_stop_tx_ba_cb_irqsafe - low level driver ready to stop aggregate.
6420 * ieee80211_find_sta - find a station
6434 * ieee80211_find_sta_by_ifaddr - find a station on hardware
6438 * @localaddr: local address (vif->sdata->vif.addr). Use NULL for 'any'.
6460 * ieee80211_find_sta_by_link_addrs - find STA by link addresses
6478 * ieee80211_sta_block_awake - block station from waking up
6489 * This function allows implementing this mode in a race-free
6499 * cause mac80211 to be able to send ps-poll responses, and if
6510 * ieee80211_sta_eosp - notify mac80211 about end of SP
6516 * This applies for PS-Poll as well as uAPSD.
6519 * not mix calls to irqsafe/non-irqsafe versions, this function
6521 * all non-irqsafe, don't mix!
6531 * ieee80211_send_eosp_nullfunc - ask mac80211 to send NDP with EOSP
6544 * will be sent despite the station being in power-save.
6553 * ieee80211_sta_recalc_aggregates - recalculate aggregate data after a change
6556 * Call this function after changing a per-link aggregate data as referenced in
6566 * ieee80211_sta_register_airtime - register airtime usage for a sta/tid
6594 * ieee80211_txq_airtime_check - check if a txq can send frame to device
6606 * ieee80211_iter_keys - iterate keys programmed into the device
6633 * ieee80211_iter_keys_rcu - iterate keys programmed into the device
6657 * ieee80211_iter_chan_contexts_atomic - iterate channel contexts
6672 * found while iterating, whether they've been re-added already
6683 * ieee80211_iter_chan_contexts_mtx - iterate channel contexts
6697 * found while iterating, whether they've been re-added already
6708 * ieee80211_ap_probereq_get - retrieve a Probe Request template
6715 * .bss_info_changed callback function and only in managed mode. The function
6725 * ieee80211_beacon_loss - inform hardware does not receive beacons
6736 * ieee80211_connection_loss - inform hardware has lost connection to the AP
6752 * ieee80211_disconnect - request disconnection
6763 * ieee80211_resume_disconnect - disconnect from AP after resume
6786 * ieee80211_hw_restart_disconnect - disconnect from AP after
6796 * ieee80211_cqm_rssi_notify - inform a configured connection quality monitoring
6814 * ieee80211_cqm_beacon_loss_notify - inform CQM of beacon loss
6822 * ieee80211_radar_detected - inform that a radar was detected
6826 * pass a valid pointer during MLO. For non-MLO %NULL can be passed
6832 * ieee80211_chswitch_done - Complete channel switch process
6838 * Complete the channel switch post-process: set the new operational channel
6845 * ieee80211_channel_switch_disconnect - disconnect due to channel switch error
6855 * ieee80211_request_smps - request SM PS transition
6858 * @smps_mode: new SM PS mode
6861 * mode. This is useful when the driver has more information than
6868 * ieee80211_ready_on_channel - notification of remain-on-channel start
6874 * ieee80211_remain_on_channel_expired - remain_on_channel duration expired
6880 * ieee80211_stop_rx_ba_session - callback to stop existing BA sessions
6887 * therefore prevent the peer device to use a-mpdu aggregation.
6897 * ieee80211_mark_rx_ba_filtered_frames - move RX BA window and mark filtered
6916 * ieee80211_send_bar - send a BlockAckReq frame
6929 * ieee80211_manage_rx_ba_offl - helper to queue an RX BA work
6938 * ieee80211_start_rx_ba_session_offl - start a Rx BA session
6960 * ieee80211_stop_rx_ba_session_offl - stop a Rx BA session
6982 * ieee80211_rx_ba_timer_expired - stop a Rx BA session due to timeout
6999 * struct ieee80211_tx_rate_control - rate control information for/from RC algo
7011 * @short_preamble: whether mac80211 will request short-preamble transmission
7013 * @rate_idx_mask: user-requested (legacy) rate mask
7014 * @rate_idx_mcs_mask: user-requested MCS rate mask (NULL if not in use)
7015 * @bss: whether this frame is sent out in AP or IBSS mode
7030 * enum rate_control_capabilities - rate control capabilities
7043 * mac80211 should start A-MPDU sessions on tx
7086 return (sta == NULL || sta->deflink.supp_rates[band] & BIT(index));
7095 for (i = 0; i < sband->n_bitrates; i++)
7096 if (rate_supported(sta, sband->band, i))
7112 for (i = 0; i < sband->n_bitrates; i++)
7113 if (rate_supported(sta, sband->band, i))
7119 * rate_control_set_rates - pass the sta rate selection to mac80211/driver
7142 return conf->chandef.width == NL80211_CHAN_WIDTH_20;
7148 return conf->chandef.width == NL80211_CHAN_WIDTH_40 &&
7149 conf->chandef.center_freq1 < conf->chandef.chan->center_freq;
7155 return conf->chandef.width == NL80211_CHAN_WIDTH_40 &&
7156 conf->chandef.center_freq1 > conf->chandef.chan->center_freq;
7162 return conf->chandef.width == NL80211_CHAN_WIDTH_40;
7168 return (conf->chandef.width != NL80211_CHAN_WIDTH_5) &&
7169 (conf->chandef.width != NL80211_CHAN_WIDTH_10) &&
7170 (conf->chandef.width != NL80211_CHAN_WIDTH_20_NOHT);
7192 return ieee80211_iftype_p2p(vif->type, vif->p2p);
7196 * ieee80211_get_he_iftype_cap_vif - return HE capabilities for sband/vif
7210 * ieee80211_get_he_6ghz_capa_vif - return HE 6 GHz capabilities
7224 * ieee80211_get_eht_iftype_cap_vif - return ETH capabilities for sband/vif
7238 * ieee80211_update_mu_groups - set the VHT MU-MIMO groud data
7242 * @membership: 64 bits array - a bit is set if station is member of the group
7260 * ieee80211_ave_rssi - report the average RSSI for the specified interface
7263 * @link_id: the link ID for MLO, or -1 for non-MLO
7273 * ieee80211_report_wowlan_wakeup - report WoWLAN wakeup
7285 * ieee80211_tx_prepare_skb - prepare an 802.11 skb for transmission
7301 * ieee80211_parse_tx_radiotap - Sanity-check and parse the radiotap header
7317 * struct ieee80211_noa_data - holds temporary data for tracking P2P NoA state
7344 * ieee80211_parse_p2p_noa - initialize NoA tracking data from P2P IE
7356 * ieee80211_update_p2p_noa - get next pending P2P GO absent state change
7364 * ieee80211_tdls_oper_request - request userspace to perform a TDLS operation
7378 * ieee80211_reserve_tid - request to reserve a specific TID
7399 * ieee80211_unreserve_tid - request to unreserve a specific TID
7415 * ieee80211_tx_dequeue - dequeue a packet from a software tx queue
7425 * skb->cb, e.g. the key pointer, are protected by RCU and thus the
7438 * ieee80211_tx_dequeue_ni - dequeue a packet from a software tx queue
7463 * ieee80211_handle_wake_tx_queue - mac80211 handler for wake_tx_queue callback
7475 * ieee80211_next_txq - get next tx queue to pull packets from
7487 * ieee80211_txq_schedule_start - start new scheduling round for TXQs
7506 * ieee80211_schedule_txq - schedule a TXQ for transmission
7524 * ieee80211_return_txq - return a TXQ previously acquired by ieee80211_next_txq()
7541 * ieee80211_txq_may_transmit - check whether TXQ is allowed to transmit
7555 * aligned against driver's own round-robin scheduler list. i.e it rotates
7570 * ieee80211_txq_get_depth - get pending frame/byte count of given txq
7573 * txq state can change half-way of this function and the caller may end up
7574 * with "new" frame_cnt and "old" byte_cnt or vice-versa.
7585 * ieee80211_nan_func_terminated - notify about NAN function termination.
7601 * ieee80211_nan_func_match - notify about NAN function match event.
7616 * ieee80211_calc_rx_airtime - calculate estimated transmission airtime for RX.
7633 * ieee80211_calc_tx_airtime - calculate estimated transmission airtime for TX.
7648 * ieee80211_get_fils_discovery_tmpl - Get FILS discovery template.
7660 * ieee80211_get_unsol_bcast_probe_resp_tmpl - Get unsolicited broadcast
7674 * ieee80211_obss_color_collision_notify - notify userland about a BSS color
7676 * @link_id: valid link_id during MLO or 0 for non-MLO
7687 * ieee80211_is_tx_data - check if frame is a data frame
7699 struct ieee80211_hdr *hdr = (void *) skb->data;
7701 return info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP ||
7702 ieee80211_is_data(hdr->frame_control);
7706 * ieee80211_set_active_links - set active links in client mode
7714 * must be in client mode (in AP mode, all links are always active),
7721 * - change_vif_links(0x11)
7722 * - unassign_vif_chanctx(link_id=0)
7723 * - assign_vif_chanctx(link_id=4)
7724 * - change_sta_links(0x11) for each affected STA (the AP)
7726 * - remove group keys on the old link (link_id 0)
7727 * - add new group keys (GTK/IGTK/BIGTK) on the new link (link_id 4)
7728 * - change_sta_links(0x10) for each affected STA (the AP)
7729 * - change_vif_links(0x10)
7736 * ieee80211_set_active_links_async - asynchronously set active links
7749 * ieee80211_send_teardown_neg_ttlm - tear down a negotiated TTLM request
7758 * ieee80211_chan_width_to_rx_bw - convert channel width to STA RX bandwidth
7785 * ieee80211_prepare_rx_omi_bw - prepare for sending BW RX OMI
7820 * ieee80211_finalize_rx_omi_bw - finalize BW RX OMI update
7828 /* for older drivers - let's not document these ... */
7839 enum ieee80211_chanctx_switch_mode mode);
7842 * ieee80211_vif_nan_started - Return whether a NAN vif is started