mac80211.h (6ea24cf79e055f0a62a64baa8587e2254a493c7b) mac80211.h (7947d3e075cde1a18e538f2dafbc850aa356ff79)
1/*
2 * mac80211 <-> driver interface
3 *
4 * Copyright 2002-2005, Devicescape Software, Inc.
5 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz>
6 * Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net>
7 * Copyright 2013-2014 Intel Mobile Communications GmbH
8 * Copyright (C) 2015 - 2016 Intel Deutschland GmbH

--- 7 unchanged lines hidden (view full) ---

16#define MAC80211_H
17
18#include <linux/bug.h>
19#include <linux/kernel.h>
20#include <linux/if_ether.h>
21#include <linux/skbuff.h>
22#include <linux/ieee80211.h>
23#include <net/cfg80211.h>
1/*
2 * mac80211 <-> driver interface
3 *
4 * Copyright 2002-2005, Devicescape Software, Inc.
5 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz>
6 * Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net>
7 * Copyright 2013-2014 Intel Mobile Communications GmbH
8 * Copyright (C) 2015 - 2016 Intel Deutschland GmbH

--- 7 unchanged lines hidden (view full) ---

16#define MAC80211_H
17
18#include <linux/bug.h>
19#include <linux/kernel.h>
20#include <linux/if_ether.h>
21#include <linux/skbuff.h>
22#include <linux/ieee80211.h>
23#include <net/cfg80211.h>
24#include <net/codel.h>
24#include <asm/unaligned.h>
25
26/**
27 * DOC: Introduction
28 *
29 * mac80211 is the Linux stack for 802.11 hardware that implements
30 * only partial functionality in hard- or firmware. This document
31 * defines the interface between mac80211 and low-level hardware

--- 254 unchanged lines hidden (view full) ---

286 * @BSS_CHANGED_QOS: QoS for this association was enabled/disabled. Note
287 * that it is only ever disabled for station mode.
288 * @BSS_CHANGED_IDLE: Idle changed for this BSS/interface.
289 * @BSS_CHANGED_SSID: SSID changed for this BSS (AP and IBSS mode)
290 * @BSS_CHANGED_AP_PROBE_RESP: Probe Response changed for this BSS (AP mode)
291 * @BSS_CHANGED_PS: PS changed for this BSS (STA mode)
292 * @BSS_CHANGED_TXPOWER: TX power setting changed for this interface
293 * @BSS_CHANGED_P2P_PS: P2P powersave settings (CTWindow, opportunistic PS)
25#include <asm/unaligned.h>
26
27/**
28 * DOC: Introduction
29 *
30 * mac80211 is the Linux stack for 802.11 hardware that implements
31 * only partial functionality in hard- or firmware. This document
32 * defines the interface between mac80211 and low-level hardware

--- 254 unchanged lines hidden (view full) ---

287 * @BSS_CHANGED_QOS: QoS for this association was enabled/disabled. Note
288 * that it is only ever disabled for station mode.
289 * @BSS_CHANGED_IDLE: Idle changed for this BSS/interface.
290 * @BSS_CHANGED_SSID: SSID changed for this BSS (AP and IBSS mode)
291 * @BSS_CHANGED_AP_PROBE_RESP: Probe Response changed for this BSS (AP mode)
292 * @BSS_CHANGED_PS: PS changed for this BSS (STA mode)
293 * @BSS_CHANGED_TXPOWER: TX power setting changed for this interface
294 * @BSS_CHANGED_P2P_PS: P2P powersave settings (CTWindow, opportunistic PS)
294 * changed (currently only in P2P client mode, GO mode will be later)
295 * changed
295 * @BSS_CHANGED_BEACON_INFO: Data from the AP's beacon became available:
296 * currently dtim_period only is under consideration.
297 * @BSS_CHANGED_BANDWIDTH: The bandwidth used by this interface changed,
298 * note that this is only called when it changes after the channel
299 * context had been assigned.
300 * @BSS_CHANGED_OCB: OCB join status changed
301 * @BSS_CHANGED_MU_GROUPS: VHT MU-MIMO group id or user position changed
302 */

--- 218 unchanged lines hidden (view full) ---

521 * @txpower: TX power in dBm
522 * @txpower_type: TX power adjustment used to control per packet Transmit
523 * Power Control (TPC) in lower driver for the current vif. In particular
524 * TPC is enabled if value passed in %txpower_type is
525 * NL80211_TX_POWER_LIMITED (allow using less than specified from
526 * userspace), whereas TPC is disabled if %txpower_type is set to
527 * NL80211_TX_POWER_FIXED (use value configured from userspace)
528 * @p2p_noa_attr: P2P NoA attribute for P2P powersave
296 * @BSS_CHANGED_BEACON_INFO: Data from the AP's beacon became available:
297 * currently dtim_period only is under consideration.
298 * @BSS_CHANGED_BANDWIDTH: The bandwidth used by this interface changed,
299 * note that this is only called when it changes after the channel
300 * context had been assigned.
301 * @BSS_CHANGED_OCB: OCB join status changed
302 * @BSS_CHANGED_MU_GROUPS: VHT MU-MIMO group id or user position changed
303 */

--- 218 unchanged lines hidden (view full) ---

522 * @txpower: TX power in dBm
523 * @txpower_type: TX power adjustment used to control per packet Transmit
524 * Power Control (TPC) in lower driver for the current vif. In particular
525 * TPC is enabled if value passed in %txpower_type is
526 * NL80211_TX_POWER_LIMITED (allow using less than specified from
527 * userspace), whereas TPC is disabled if %txpower_type is set to
528 * NL80211_TX_POWER_FIXED (use value configured from userspace)
529 * @p2p_noa_attr: P2P NoA attribute for P2P powersave
530 * @allow_p2p_go_ps: indication for AP or P2P GO interface, whether it's allowed
531 * to use P2P PS mechanism or not. AP/P2P GO is not allowed to use P2P PS
532 * if it has associated clients without P2P PS support.
529 */
530struct ieee80211_bss_conf {
531 const u8 *bssid;
532 /* association related data */
533 bool assoc, ibss_joined;
534 bool ibss_creator;
535 u16 aid;
536 /* erp related data */

--- 4 unchanged lines hidden (view full) ---

541 u8 dtim_period;
542 u16 beacon_int;
543 u16 assoc_capability;
544 u64 sync_tsf;
545 u32 sync_device_ts;
546 u8 sync_dtim_count;
547 u32 basic_rates;
548 struct ieee80211_rate *beacon_rate;
533 */
534struct ieee80211_bss_conf {
535 const u8 *bssid;
536 /* association related data */
537 bool assoc, ibss_joined;
538 bool ibss_creator;
539 u16 aid;
540 /* erp related data */

--- 4 unchanged lines hidden (view full) ---

545 u8 dtim_period;
546 u16 beacon_int;
547 u16 assoc_capability;
548 u64 sync_tsf;
549 u32 sync_device_ts;
550 u8 sync_dtim_count;
551 u32 basic_rates;
552 struct ieee80211_rate *beacon_rate;
549 int mcast_rate[IEEE80211_NUM_BANDS];
553 int mcast_rate[NUM_NL80211_BANDS];
550 u16 ht_operation_mode;
551 s32 cqm_rssi_thold;
552 u32 cqm_rssi_hyst;
553 struct cfg80211_chan_def chandef;
554 struct ieee80211_mu_group_data mu_group;
555 __be32 arp_addr_list[IEEE80211_BSS_ARP_ADDR_LIST_LEN];
556 int arp_addr_cnt;
557 bool qos;
558 bool idle;
559 bool ps;
560 u8 ssid[IEEE80211_MAX_SSID_LEN];
561 size_t ssid_len;
562 bool hidden_ssid;
563 int txpower;
564 enum nl80211_tx_power_setting txpower_type;
565 struct ieee80211_p2p_noa_attr p2p_noa_attr;
554 u16 ht_operation_mode;
555 s32 cqm_rssi_thold;
556 u32 cqm_rssi_hyst;
557 struct cfg80211_chan_def chandef;
558 struct ieee80211_mu_group_data mu_group;
559 __be32 arp_addr_list[IEEE80211_BSS_ARP_ADDR_LIST_LEN];
560 int arp_addr_cnt;
561 bool qos;
562 bool idle;
563 bool ps;
564 u8 ssid[IEEE80211_MAX_SSID_LEN];
565 size_t ssid_len;
566 bool hidden_ssid;
567 int txpower;
568 enum nl80211_tx_power_setting txpower_type;
569 struct ieee80211_p2p_noa_attr p2p_noa_attr;
570 bool allow_p2p_go_ps;
566};
567
568/**
569 * enum mac80211_tx_info_flags - flags to describe transmission information/status
570 *
571 * These flags are used with the @flags member of &ieee80211_tx_info.
572 *
573 * @IEEE80211_TX_CTL_REQ_TX_STATUS: require TX status callback for this frame.

--- 130 unchanged lines hidden (view full) ---

704/**
705 * enum mac80211_tx_control_flags - flags to describe transmit control
706 *
707 * @IEEE80211_TX_CTRL_PORT_CTRL_PROTO: this frame is a port control
708 * protocol frame (e.g. EAP)
709 * @IEEE80211_TX_CTRL_PS_RESPONSE: This frame is a response to a poll
710 * frame (PS-Poll or uAPSD).
711 * @IEEE80211_TX_CTRL_RATE_INJECT: This frame is injected with rate information
571};
572
573/**
574 * enum mac80211_tx_info_flags - flags to describe transmission information/status
575 *
576 * These flags are used with the @flags member of &ieee80211_tx_info.
577 *
578 * @IEEE80211_TX_CTL_REQ_TX_STATUS: require TX status callback for this frame.

--- 130 unchanged lines hidden (view full) ---

709/**
710 * enum mac80211_tx_control_flags - flags to describe transmit control
711 *
712 * @IEEE80211_TX_CTRL_PORT_CTRL_PROTO: this frame is a port control
713 * protocol frame (e.g. EAP)
714 * @IEEE80211_TX_CTRL_PS_RESPONSE: This frame is a response to a poll
715 * frame (PS-Poll or uAPSD).
716 * @IEEE80211_TX_CTRL_RATE_INJECT: This frame is injected with rate information
717 * @IEEE80211_TX_CTRL_AMSDU: This frame is an A-MSDU frame
712 *
713 * These flags are used in tx_info->control.flags.
714 */
715enum mac80211_tx_control_flags {
716 IEEE80211_TX_CTRL_PORT_CTRL_PROTO = BIT(0),
717 IEEE80211_TX_CTRL_PS_RESPONSE = BIT(1),
718 IEEE80211_TX_CTRL_RATE_INJECT = BIT(2),
718 *
719 * These flags are used in tx_info->control.flags.
720 */
721enum mac80211_tx_control_flags {
722 IEEE80211_TX_CTRL_PORT_CTRL_PROTO = BIT(0),
723 IEEE80211_TX_CTRL_PS_RESPONSE = BIT(1),
724 IEEE80211_TX_CTRL_RATE_INJECT = BIT(2),
725 IEEE80211_TX_CTRL_AMSDU = BIT(3),
719};
720
721/*
722 * This definition is used as a mask to clear all temporary flags, which are
723 * set by the tx handlers for each transmission attempt by the mac80211 stack.
724 */
725#define IEEE80211_TX_TEMPORARY_FLAGS (IEEE80211_TX_CTL_NO_ACK | \
726 IEEE80211_TX_CTL_CLEAR_PS_FILT | IEEE80211_TX_CTL_FIRST_FRAGMENT | \

--- 157 unchanged lines hidden (view full) ---

884 u8 short_preamble:1;
885 u8 skip_table:1;
886 /* 2 bytes free */
887 };
888 /* only needed before rate control */
889 unsigned long jiffies;
890 };
891 /* NB: vif can be NULL for injected frames */
726};
727
728/*
729 * This definition is used as a mask to clear all temporary flags, which are
730 * set by the tx handlers for each transmission attempt by the mac80211 stack.
731 */
732#define IEEE80211_TX_TEMPORARY_FLAGS (IEEE80211_TX_CTL_NO_ACK | \
733 IEEE80211_TX_CTL_CLEAR_PS_FILT | IEEE80211_TX_CTL_FIRST_FRAGMENT | \

--- 157 unchanged lines hidden (view full) ---

891 u8 short_preamble:1;
892 u8 skip_table:1;
893 /* 2 bytes free */
894 };
895 /* only needed before rate control */
896 unsigned long jiffies;
897 };
898 /* NB: vif can be NULL for injected frames */
892 struct ieee80211_vif *vif;
899 union {
900 /* NB: vif can be NULL for injected frames */
901 struct ieee80211_vif *vif;
902
903 /* When packets are enqueued on txq it's easy
904 * to re-construct the vif pointer. There's no
905 * more space in tx_info so it can be used to
906 * store the necessary enqueue time for packet
907 * sojourn time computation.
908 */
909 codel_time_t enqueue_time;
910 };
893 struct ieee80211_key_conf *hw_key;
894 u32 flags;
895 /* 4 bytes free */
896 } control;
897 struct {
898 u64 cookie;
899 } ack;
900 struct {

--- 26 unchanged lines hidden (view full) ---

927 * and the ones generated by mac80211.
928 *
929 * @ies: pointers to band specific IEs.
930 * @len: lengths of band_specific IEs.
931 * @common_ies: IEs for all bands (especially vendor specific ones)
932 * @common_ie_len: length of the common_ies
933 */
934struct ieee80211_scan_ies {
911 struct ieee80211_key_conf *hw_key;
912 u32 flags;
913 /* 4 bytes free */
914 } control;
915 struct {
916 u64 cookie;
917 } ack;
918 struct {

--- 26 unchanged lines hidden (view full) ---

945 * and the ones generated by mac80211.
946 *
947 * @ies: pointers to band specific IEs.
948 * @len: lengths of band_specific IEs.
949 * @common_ies: IEs for all bands (especially vendor specific ones)
950 * @common_ie_len: length of the common_ies
951 */
952struct ieee80211_scan_ies {
935 const u8 *ies[IEEE80211_NUM_BANDS];
936 size_t len[IEEE80211_NUM_BANDS];
953 const u8 *ies[NUM_NL80211_BANDS];
954 size_t len[NUM_NL80211_BANDS];
937 const u8 *common_ies;
938 size_t common_ie_len;
939};
940
941
942static inline struct ieee80211_tx_info *IEEE80211_SKB_CB(struct sk_buff *skb)
943{
944 return (struct ieee80211_tx_info *)skb->cb;

--- 86 unchanged lines hidden (view full) ---

1031 * each A-MPDU
1032 * @RX_FLAG_AMPDU_LAST_KNOWN: last subframe is known, should be set on all
1033 * subframes of a single A-MPDU
1034 * @RX_FLAG_AMPDU_IS_LAST: this subframe is the last subframe of the A-MPDU
1035 * @RX_FLAG_AMPDU_DELIM_CRC_ERROR: A delimiter CRC error has been detected
1036 * on this subframe
1037 * @RX_FLAG_AMPDU_DELIM_CRC_KNOWN: The delimiter CRC field is known (the CRC
1038 * is stored in the @ampdu_delimiter_crc field)
955 const u8 *common_ies;
956 size_t common_ie_len;
957};
958
959
960static inline struct ieee80211_tx_info *IEEE80211_SKB_CB(struct sk_buff *skb)
961{
962 return (struct ieee80211_tx_info *)skb->cb;

--- 86 unchanged lines hidden (view full) ---

1049 * each A-MPDU
1050 * @RX_FLAG_AMPDU_LAST_KNOWN: last subframe is known, should be set on all
1051 * subframes of a single A-MPDU
1052 * @RX_FLAG_AMPDU_IS_LAST: this subframe is the last subframe of the A-MPDU
1053 * @RX_FLAG_AMPDU_DELIM_CRC_ERROR: A delimiter CRC error has been detected
1054 * on this subframe
1055 * @RX_FLAG_AMPDU_DELIM_CRC_KNOWN: The delimiter CRC field is known (the CRC
1056 * is stored in the @ampdu_delimiter_crc field)
1057 * @RX_FLAG_MIC_STRIPPED: The mic was stripped of this packet. Decryption was
1058 * done by the hardware
1039 * @RX_FLAG_LDPC: LDPC was used
1040 * @RX_FLAG_ONLY_MONITOR: Report frame only to monitor interfaces without
1041 * processing it in any regular way.
1042 * This is useful if drivers offload some frames but still want to report
1043 * them for sniffing purposes.
1044 * @RX_FLAG_SKIP_MONITOR: Process and report frame to all interfaces except
1045 * monitor interfaces.
1046 * This is useful if drivers offload some frames but still want to report

--- 8 unchanged lines hidden (view full) ---

1055 * the 3rd (last) one must not have this flag set. The flag is used to
1056 * deal with retransmission/duplication recovery properly since A-MSDU
1057 * subframes share the same sequence number. Reported subframes can be
1058 * either regular MSDU or singly A-MSDUs. Subframes must not be
1059 * interleaved with other frames.
1060 * @RX_FLAG_RADIOTAP_VENDOR_DATA: This frame contains vendor-specific
1061 * radiotap data in the skb->data (before the frame) as described by
1062 * the &struct ieee80211_vendor_radiotap.
1059 * @RX_FLAG_LDPC: LDPC was used
1060 * @RX_FLAG_ONLY_MONITOR: Report frame only to monitor interfaces without
1061 * processing it in any regular way.
1062 * This is useful if drivers offload some frames but still want to report
1063 * them for sniffing purposes.
1064 * @RX_FLAG_SKIP_MONITOR: Process and report frame to all interfaces except
1065 * monitor interfaces.
1066 * This is useful if drivers offload some frames but still want to report

--- 8 unchanged lines hidden (view full) ---

1075 * the 3rd (last) one must not have this flag set. The flag is used to
1076 * deal with retransmission/duplication recovery properly since A-MSDU
1077 * subframes share the same sequence number. Reported subframes can be
1078 * either regular MSDU or singly A-MSDUs. Subframes must not be
1079 * interleaved with other frames.
1080 * @RX_FLAG_RADIOTAP_VENDOR_DATA: This frame contains vendor-specific
1081 * radiotap data in the skb->data (before the frame) as described by
1082 * the &struct ieee80211_vendor_radiotap.
1083 * @RX_FLAG_ALLOW_SAME_PN: Allow the same PN as same packet before.
1084 * This is used for AMSDU subframes which can have the same PN as
1085 * the first subframe.
1063 */
1064enum mac80211_rx_flags {
1065 RX_FLAG_MMIC_ERROR = BIT(0),
1066 RX_FLAG_DECRYPTED = BIT(1),
1067 RX_FLAG_MACTIME_PLCP_START = BIT(2),
1068 RX_FLAG_MMIC_STRIPPED = BIT(3),
1069 RX_FLAG_IV_STRIPPED = BIT(4),
1070 RX_FLAG_FAILED_FCS_CRC = BIT(5),

--- 17 unchanged lines hidden (view full) ---

1088 RX_FLAG_LDPC = BIT(23),
1089 RX_FLAG_ONLY_MONITOR = BIT(24),
1090 RX_FLAG_SKIP_MONITOR = BIT(25),
1091 RX_FLAG_STBC_MASK = BIT(26) | BIT(27),
1092 RX_FLAG_10MHZ = BIT(28),
1093 RX_FLAG_5MHZ = BIT(29),
1094 RX_FLAG_AMSDU_MORE = BIT(30),
1095 RX_FLAG_RADIOTAP_VENDOR_DATA = BIT(31),
1086 */
1087enum mac80211_rx_flags {
1088 RX_FLAG_MMIC_ERROR = BIT(0),
1089 RX_FLAG_DECRYPTED = BIT(1),
1090 RX_FLAG_MACTIME_PLCP_START = BIT(2),
1091 RX_FLAG_MMIC_STRIPPED = BIT(3),
1092 RX_FLAG_IV_STRIPPED = BIT(4),
1093 RX_FLAG_FAILED_FCS_CRC = BIT(5),

--- 17 unchanged lines hidden (view full) ---

1111 RX_FLAG_LDPC = BIT(23),
1112 RX_FLAG_ONLY_MONITOR = BIT(24),
1113 RX_FLAG_SKIP_MONITOR = BIT(25),
1114 RX_FLAG_STBC_MASK = BIT(26) | BIT(27),
1115 RX_FLAG_10MHZ = BIT(28),
1116 RX_FLAG_5MHZ = BIT(29),
1117 RX_FLAG_AMSDU_MORE = BIT(30),
1118 RX_FLAG_RADIOTAP_VENDOR_DATA = BIT(31),
1119 RX_FLAG_MIC_STRIPPED = BIT_ULL(32),
1120 RX_FLAG_ALLOW_SAME_PN = BIT_ULL(33),
1096};
1097
1098#define RX_FLAG_STBC_SHIFT 26
1099
1100/**
1101 * enum mac80211_rx_vht_flags - receive VHT flags
1102 *
1103 * These flags are used with the @vht_flag member of

--- 13 unchanged lines hidden (view full) ---

1117 * struct ieee80211_rx_status - receive status
1118 *
1119 * The low-level driver should provide this information (the subset
1120 * supported by hardware) to the 802.11 code with each received
1121 * frame, in the skb's control buffer (cb).
1122 *
1123 * @mactime: value in microseconds of the 64-bit Time Synchronization Function
1124 * (TSF) timer when the first data symbol (MPDU) arrived at the hardware.
1121};
1122
1123#define RX_FLAG_STBC_SHIFT 26
1124
1125/**
1126 * enum mac80211_rx_vht_flags - receive VHT flags
1127 *
1128 * These flags are used with the @vht_flag member of

--- 13 unchanged lines hidden (view full) ---

1142 * struct ieee80211_rx_status - receive status
1143 *
1144 * The low-level driver should provide this information (the subset
1145 * supported by hardware) to the 802.11 code with each received
1146 * frame, in the skb's control buffer (cb).
1147 *
1148 * @mactime: value in microseconds of the 64-bit Time Synchronization Function
1149 * (TSF) timer when the first data symbol (MPDU) arrived at the hardware.
1150 * @boottime_ns: CLOCK_BOOTTIME timestamp the frame was received at, this is
1151 * needed only for beacons and probe responses that update the scan cache.
1125 * @device_timestamp: arbitrary timestamp for the device, mac80211 doesn't use
1126 * it but can store it and pass it back to the driver for synchronisation
1127 * @band: the active band when this frame was received
1128 * @freq: frequency the radio was tuned to when receiving this frame, in MHz
1129 * This field must be set for management frames, but isn't strictly needed
1130 * for data (other) frames - for those it only affects radiotap reporting.
1131 * @signal: signal strength when receiving this frame, either in dBm, in dB or
1132 * unspecified depending on the hardware capabilities flags

--- 10 unchanged lines hidden (view full) ---

1143 * @vht_flag: %RX_VHT_FLAG_*
1144 * @rx_flags: internal RX flags for mac80211
1145 * @ampdu_reference: A-MPDU reference number, must be a different value for
1146 * each A-MPDU but the same for each subframe within one A-MPDU
1147 * @ampdu_delimiter_crc: A-MPDU delimiter CRC
1148 */
1149struct ieee80211_rx_status {
1150 u64 mactime;
1152 * @device_timestamp: arbitrary timestamp for the device, mac80211 doesn't use
1153 * it but can store it and pass it back to the driver for synchronisation
1154 * @band: the active band when this frame was received
1155 * @freq: frequency the radio was tuned to when receiving this frame, in MHz
1156 * This field must be set for management frames, but isn't strictly needed
1157 * for data (other) frames - for those it only affects radiotap reporting.
1158 * @signal: signal strength when receiving this frame, either in dBm, in dB or
1159 * unspecified depending on the hardware capabilities flags

--- 10 unchanged lines hidden (view full) ---

1170 * @vht_flag: %RX_VHT_FLAG_*
1171 * @rx_flags: internal RX flags for mac80211
1172 * @ampdu_reference: A-MPDU reference number, must be a different value for
1173 * each A-MPDU but the same for each subframe within one A-MPDU
1174 * @ampdu_delimiter_crc: A-MPDU delimiter CRC
1175 */
1176struct ieee80211_rx_status {
1177 u64 mactime;
1178 u64 boottime_ns;
1151 u32 device_timestamp;
1152 u32 ampdu_reference;
1179 u32 device_timestamp;
1180 u32 ampdu_reference;
1153 u32 flag;
1181 u64 flag;
1154 u16 freq;
1155 u8 vht_flag;
1156 u8 rate_idx;
1157 u8 vht_nss;
1158 u8 rx_flags;
1159 u8 band;
1160 u8 antenna;
1161 s8 signal;

--- 570 unchanged lines hidden (view full) ---

1732 * field is always valid for packets with a VHT preamble. For packets
1733 * with a HT preamble, additional limits apply:
1734 * + If the skb is transmitted as part of a BA agreement, the
1735 * A-MSDU maximal size is min(max_amsdu_len, 4065) bytes.
1736 * + If the skb is not part of a BA aggreement, the A-MSDU maximal
1737 * size is min(max_amsdu_len, 7935) bytes.
1738 * Both additional HT limits must be enforced by the low level driver.
1739 * This is defined by the spec (IEEE 802.11-2012 section 8.3.2.2 NOTE 2).
1182 u16 freq;
1183 u8 vht_flag;
1184 u8 rate_idx;
1185 u8 vht_nss;
1186 u8 rx_flags;
1187 u8 band;
1188 u8 antenna;
1189 s8 signal;

--- 570 unchanged lines hidden (view full) ---

1760 * field is always valid for packets with a VHT preamble. For packets
1761 * with a HT preamble, additional limits apply:
1762 * + If the skb is transmitted as part of a BA agreement, the
1763 * A-MSDU maximal size is min(max_amsdu_len, 4065) bytes.
1764 * + If the skb is not part of a BA aggreement, the A-MSDU maximal
1765 * size is min(max_amsdu_len, 7935) bytes.
1766 * Both additional HT limits must be enforced by the low level driver.
1767 * This is defined by the spec (IEEE 802.11-2012 section 8.3.2.2 NOTE 2).
1768 * @support_p2p_ps: indicates whether the STA supports P2P PS mechanism or not.
1769 * @max_rc_amsdu_len: Maximum A-MSDU size in bytes recommended by rate control.
1740 * @txq: per-TID data TX queues (if driver uses the TXQ abstraction)
1741 */
1742struct ieee80211_sta {
1770 * @txq: per-TID data TX queues (if driver uses the TXQ abstraction)
1771 */
1772struct ieee80211_sta {
1743 u32 supp_rates[IEEE80211_NUM_BANDS];
1773 u32 supp_rates[NUM_NL80211_BANDS];
1744 u8 addr[ETH_ALEN];
1745 u16 aid;
1746 struct ieee80211_sta_ht_cap ht_cap;
1747 struct ieee80211_sta_vht_cap vht_cap;
1748 bool wme;
1749 u8 uapsd_queues;
1750 u8 max_sp;
1751 u8 rx_nss;
1752 enum ieee80211_sta_rx_bandwidth bandwidth;
1753 enum ieee80211_smps_mode smps_mode;
1754 struct ieee80211_sta_rates __rcu *rates;
1755 bool tdls;
1756 bool tdls_initiator;
1757 bool mfp;
1758 u8 max_amsdu_subframes;
1759 u16 max_amsdu_len;
1774 u8 addr[ETH_ALEN];
1775 u16 aid;
1776 struct ieee80211_sta_ht_cap ht_cap;
1777 struct ieee80211_sta_vht_cap vht_cap;
1778 bool wme;
1779 u8 uapsd_queues;
1780 u8 max_sp;
1781 u8 rx_nss;
1782 enum ieee80211_sta_rx_bandwidth bandwidth;
1783 enum ieee80211_smps_mode smps_mode;
1784 struct ieee80211_sta_rates __rcu *rates;
1785 bool tdls;
1786 bool tdls_initiator;
1787 bool mfp;
1788 u8 max_amsdu_subframes;
1789 u16 max_amsdu_len;
1790 bool support_p2p_ps;
1791 u16 max_rc_amsdu_len;
1760
1761 struct ieee80211_txq *txq[IEEE80211_NUM_TIDS];
1762
1763 /* must be last */
1764 u8 drv_priv[0] __aligned(sizeof(void *));
1765};
1766
1767/**

--- 197 unchanged lines hidden (view full) ---

1965 * by just its MAC address; this prevents, for example, the same station
1966 * from connecting to two virtual AP interfaces at the same time.
1967 *
1968 * @IEEE80211_HW_SUPPORTS_REORDERING_BUFFER: Hardware (or driver) manages the
1969 * reordering buffer internally, guaranteeing mac80211 receives frames in
1970 * order and does not need to manage its own reorder buffer or BA session
1971 * timeout.
1972 *
1792
1793 struct ieee80211_txq *txq[IEEE80211_NUM_TIDS];
1794
1795 /* must be last */
1796 u8 drv_priv[0] __aligned(sizeof(void *));
1797};
1798
1799/**

--- 197 unchanged lines hidden (view full) ---

1997 * by just its MAC address; this prevents, for example, the same station
1998 * from connecting to two virtual AP interfaces at the same time.
1999 *
2000 * @IEEE80211_HW_SUPPORTS_REORDERING_BUFFER: Hardware (or driver) manages the
2001 * reordering buffer internally, guaranteeing mac80211 receives frames in
2002 * order and does not need to manage its own reorder buffer or BA session
2003 * timeout.
2004 *
2005 * @IEEE80211_HW_USES_RSS: The device uses RSS and thus requires parallel RX,
2006 * which implies using per-CPU station statistics.
2007 *
2008 * @IEEE80211_HW_TX_AMSDU: Hardware (or driver) supports software aggregated
2009 * A-MSDU frames. Requires software tx queueing and fast-xmit support.
2010 * When not using minstrel/minstrel_ht rate control, the driver must
2011 * limit the maximum A-MSDU size based on the current tx rate by setting
2012 * max_rc_amsdu_len in struct ieee80211_sta.
2013 *
2014 * @IEEE80211_HW_TX_FRAG_LIST: Hardware (or driver) supports sending frag_list
2015 * skbs, needed for zero-copy software A-MSDU.
2016 *
1973 * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
1974 */
1975enum ieee80211_hw_flags {
1976 IEEE80211_HW_HAS_RATE_CONTROL,
1977 IEEE80211_HW_RX_INCLUDES_FCS,
1978 IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING,
1979 IEEE80211_HW_SIGNAL_UNSPEC,
1980 IEEE80211_HW_SIGNAL_DBM,

--- 21 unchanged lines hidden (view full) ---

2002 IEEE80211_HW_CHANCTX_STA_CSA,
2003 IEEE80211_HW_SUPPORTS_CLONED_SKBS,
2004 IEEE80211_HW_SINGLE_SCAN_ON_ALL_BANDS,
2005 IEEE80211_HW_TDLS_WIDER_BW,
2006 IEEE80211_HW_SUPPORTS_AMSDU_IN_AMPDU,
2007 IEEE80211_HW_BEACON_TX_STATUS,
2008 IEEE80211_HW_NEEDS_UNIQUE_STA_ADDR,
2009 IEEE80211_HW_SUPPORTS_REORDERING_BUFFER,
2017 * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
2018 */
2019enum ieee80211_hw_flags {
2020 IEEE80211_HW_HAS_RATE_CONTROL,
2021 IEEE80211_HW_RX_INCLUDES_FCS,
2022 IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING,
2023 IEEE80211_HW_SIGNAL_UNSPEC,
2024 IEEE80211_HW_SIGNAL_DBM,

--- 21 unchanged lines hidden (view full) ---

2046 IEEE80211_HW_CHANCTX_STA_CSA,
2047 IEEE80211_HW_SUPPORTS_CLONED_SKBS,
2048 IEEE80211_HW_SINGLE_SCAN_ON_ALL_BANDS,
2049 IEEE80211_HW_TDLS_WIDER_BW,
2050 IEEE80211_HW_SUPPORTS_AMSDU_IN_AMPDU,
2051 IEEE80211_HW_BEACON_TX_STATUS,
2052 IEEE80211_HW_NEEDS_UNIQUE_STA_ADDR,
2053 IEEE80211_HW_SUPPORTS_REORDERING_BUFFER,
2054 IEEE80211_HW_USES_RSS,
2055 IEEE80211_HW_TX_AMSDU,
2056 IEEE80211_HW_TX_FRAG_LIST,
2010
2011 /* keep last, obviously */
2012 NUM_IEEE80211_HW_FLAGS
2013};
2014
2015/**
2016 * struct ieee80211_hw - hardware information and state
2017 *

--- 56 unchanged lines hidden (view full) ---

2074 * it shouldn't be set.
2075 *
2076 * @max_tx_aggregation_subframes: maximum number of subframes in an
2077 * aggregate an HT driver will transmit. Though ADDBA will advertise
2078 * a constant value of 64 as some older APs can crash if the window
2079 * size is smaller (an example is LinkSys WRT120N with FW v1.0.07
2080 * build 002 Jun 18 2012).
2081 *
2057
2058 /* keep last, obviously */
2059 NUM_IEEE80211_HW_FLAGS
2060};
2061
2062/**
2063 * struct ieee80211_hw - hardware information and state
2064 *

--- 56 unchanged lines hidden (view full) ---

2121 * it shouldn't be set.
2122 *
2123 * @max_tx_aggregation_subframes: maximum number of subframes in an
2124 * aggregate an HT driver will transmit. Though ADDBA will advertise
2125 * a constant value of 64 as some older APs can crash if the window
2126 * size is smaller (an example is LinkSys WRT120N with FW v1.0.07
2127 * build 002 Jun 18 2012).
2128 *
2129 * @max_tx_fragments: maximum number of tx buffers per (A)-MSDU, sum
2130 * of 1 + skb_shinfo(skb)->nr_frags for each skb in the frag_list.
2131 *
2082 * @offchannel_tx_hw_queue: HW queue ID to use for offchannel TX
2083 * (if %IEEE80211_HW_QUEUE_CONTROL is set)
2084 *
2085 * @radiotap_mcs_details: lists which MCS information can the HW
2086 * reports, by default it is set to _MCS, _GI and _BW but doesn't
2087 * include _FMT. Use %IEEE80211_RADIOTAP_MCS_HAVE_* values, only
2088 * adding _BW is supported today.
2089 *

--- 14 unchanged lines hidden (view full) ---

2104 *
2105 * @uapsd_max_sp_len: maximum number of total buffered frames the WMM AP may
2106 * deliver to a WMM STA during any Service Period triggered by the WMM STA.
2107 * Use IEEE80211_WMM_IE_STA_QOSINFO_SP_* for correct values.
2108 *
2109 * @n_cipher_schemes: a size of an array of cipher schemes definitions.
2110 * @cipher_schemes: a pointer to an array of cipher scheme definitions
2111 * supported by HW.
2132 * @offchannel_tx_hw_queue: HW queue ID to use for offchannel TX
2133 * (if %IEEE80211_HW_QUEUE_CONTROL is set)
2134 *
2135 * @radiotap_mcs_details: lists which MCS information can the HW
2136 * reports, by default it is set to _MCS, _GI and _BW but doesn't
2137 * include _FMT. Use %IEEE80211_RADIOTAP_MCS_HAVE_* values, only
2138 * adding _BW is supported today.
2139 *

--- 14 unchanged lines hidden (view full) ---

2154 *
2155 * @uapsd_max_sp_len: maximum number of total buffered frames the WMM AP may
2156 * deliver to a WMM STA during any Service Period triggered by the WMM STA.
2157 * Use IEEE80211_WMM_IE_STA_QOSINFO_SP_* for correct values.
2158 *
2159 * @n_cipher_schemes: a size of an array of cipher schemes definitions.
2160 * @cipher_schemes: a pointer to an array of cipher scheme definitions
2161 * supported by HW.
2112 *
2113 * @txq_ac_max_pending: maximum number of frames per AC pending in all txq
2114 * entries for a vif.
2115 */
2116struct ieee80211_hw {
2117 struct ieee80211_conf conf;
2118 struct wiphy *wiphy;
2119 const char *rate_control_algorithm;
2120 void *priv;
2121 unsigned long flags[BITS_TO_LONGS(NUM_IEEE80211_HW_FLAGS)];
2122 unsigned int extra_tx_headroom;

--- 5 unchanged lines hidden (view full) ---

2128 u16 queues;
2129 u16 max_listen_interval;
2130 s8 max_signal;
2131 u8 max_rates;
2132 u8 max_report_rates;
2133 u8 max_rate_tries;
2134 u8 max_rx_aggregation_subframes;
2135 u8 max_tx_aggregation_subframes;
2162 */
2163struct ieee80211_hw {
2164 struct ieee80211_conf conf;
2165 struct wiphy *wiphy;
2166 const char *rate_control_algorithm;
2167 void *priv;
2168 unsigned long flags[BITS_TO_LONGS(NUM_IEEE80211_HW_FLAGS)];
2169 unsigned int extra_tx_headroom;

--- 5 unchanged lines hidden (view full) ---

2175 u16 queues;
2176 u16 max_listen_interval;
2177 s8 max_signal;
2178 u8 max_rates;
2179 u8 max_report_rates;
2180 u8 max_rate_tries;
2181 u8 max_rx_aggregation_subframes;
2182 u8 max_tx_aggregation_subframes;
2183 u8 max_tx_fragments;
2136 u8 offchannel_tx_hw_queue;
2137 u8 radiotap_mcs_details;
2138 u16 radiotap_vht_details;
2139 netdev_features_t netdev_features;
2140 u8 uapsd_queues;
2141 u8 uapsd_max_sp_len;
2142 u8 n_cipher_schemes;
2143 const struct ieee80211_cipher_scheme *cipher_schemes;
2184 u8 offchannel_tx_hw_queue;
2185 u8 radiotap_mcs_details;
2186 u16 radiotap_vht_details;
2187 netdev_features_t netdev_features;
2188 u8 uapsd_queues;
2189 u8 uapsd_max_sp_len;
2190 u8 n_cipher_schemes;
2191 const struct ieee80211_cipher_scheme *cipher_schemes;
2144 int txq_ac_max_pending;
2145};
2146
2147static inline bool _ieee80211_hw_check(struct ieee80211_hw *hw,
2148 enum ieee80211_hw_flags flg)
2149{
2150 return test_bit(flg, hw->flags);
2151}
2152#define ieee80211_hw_check(hw, flg) _ieee80211_hw_check(hw, IEEE80211_HW_##flg)

--- 1192 unchanged lines hidden (view full) ---

3345 * response) has been received from a remote peer. The driver gets
3346 * parameters parsed from the incoming frame and may use them to continue
3347 * an ongoing channel-switch operation. In addition, a channel-switch
3348 * response template is provided, together with the location of the
3349 * switch-timing IE within the template. The skb can only be used within
3350 * the function call.
3351 *
3352 * @wake_tx_queue: Called when new packets have been added to the queue.
2192};
2193
2194static inline bool _ieee80211_hw_check(struct ieee80211_hw *hw,
2195 enum ieee80211_hw_flags flg)
2196{
2197 return test_bit(flg, hw->flags);
2198}
2199#define ieee80211_hw_check(hw, flg) _ieee80211_hw_check(hw, IEEE80211_HW_##flg)

--- 1192 unchanged lines hidden (view full) ---

3392 * response) has been received from a remote peer. The driver gets
3393 * parameters parsed from the incoming frame and may use them to continue
3394 * an ongoing channel-switch operation. In addition, a channel-switch
3395 * response template is provided, together with the location of the
3396 * switch-timing IE within the template. The skb can only be used within
3397 * the function call.
3398 *
3399 * @wake_tx_queue: Called when new packets have been added to the queue.
3400 * @sync_rx_queues: Process all pending frames in RSS queues. This is a
3401 * synchronization which is needed in case driver has in its RSS queues
3402 * pending frames that were received prior to the control path action
3403 * currently taken (e.g. disassociation) but are not processed yet.
3353 */
3354struct ieee80211_ops {
3355 void (*tx)(struct ieee80211_hw *hw,
3356 struct ieee80211_tx_control *control,
3357 struct sk_buff *skb);
3358 int (*start)(struct ieee80211_hw *hw);
3359 void (*stop)(struct ieee80211_hw *hw);
3360#ifdef CONFIG_PM

--- 221 unchanged lines hidden (view full) ---

3582 struct ieee80211_vif *vif,
3583 struct ieee80211_sta *sta);
3584 void (*tdls_recv_channel_switch)(struct ieee80211_hw *hw,
3585 struct ieee80211_vif *vif,
3586 struct ieee80211_tdls_ch_sw_params *params);
3587
3588 void (*wake_tx_queue)(struct ieee80211_hw *hw,
3589 struct ieee80211_txq *txq);
3404 */
3405struct ieee80211_ops {
3406 void (*tx)(struct ieee80211_hw *hw,
3407 struct ieee80211_tx_control *control,
3408 struct sk_buff *skb);
3409 int (*start)(struct ieee80211_hw *hw);
3410 void (*stop)(struct ieee80211_hw *hw);
3411#ifdef CONFIG_PM

--- 221 unchanged lines hidden (view full) ---

3633 struct ieee80211_vif *vif,
3634 struct ieee80211_sta *sta);
3635 void (*tdls_recv_channel_switch)(struct ieee80211_hw *hw,
3636 struct ieee80211_vif *vif,
3637 struct ieee80211_tdls_ch_sw_params *params);
3638
3639 void (*wake_tx_queue)(struct ieee80211_hw *hw,
3640 struct ieee80211_txq *txq);
3641 void (*sync_rx_queues)(struct ieee80211_hw *hw);
3590};
3591
3592/**
3593 * ieee80211_alloc_hw_nm - Allocate a new hardware device
3594 *
3595 * This must be called once for each hardware device. The returned pointer
3596 * must be used to refer to this device when calling other functions.
3597 * mac80211 allocates a private data area for the driver pointed to by

--- 237 unchanged lines hidden (view full) ---

3835 * for a single hardware must be synchronized against each other. Calls to
3836 * this function, ieee80211_rx_ni() and ieee80211_rx_irqsafe() may not be
3837 * mixed for a single hardware. Must not run concurrently with
3838 * ieee80211_tx_status() or ieee80211_tx_status_ni().
3839 *
3840 * This function must be called with BHs disabled.
3841 *
3842 * @hw: the hardware this frame came in on
3642};
3643
3644/**
3645 * ieee80211_alloc_hw_nm - Allocate a new hardware device
3646 *
3647 * This must be called once for each hardware device. The returned pointer
3648 * must be used to refer to this device when calling other functions.
3649 * mac80211 allocates a private data area for the driver pointed to by

--- 237 unchanged lines hidden (view full) ---

3887 * for a single hardware must be synchronized against each other. Calls to
3888 * this function, ieee80211_rx_ni() and ieee80211_rx_irqsafe() may not be
3889 * mixed for a single hardware. Must not run concurrently with
3890 * ieee80211_tx_status() or ieee80211_tx_status_ni().
3891 *
3892 * This function must be called with BHs disabled.
3893 *
3894 * @hw: the hardware this frame came in on
3895 * @sta: the station the frame was received from, or %NULL
3843 * @skb: the buffer to receive, owned by mac80211 after this call
3844 * @napi: the NAPI context
3845 */
3896 * @skb: the buffer to receive, owned by mac80211 after this call
3897 * @napi: the NAPI context
3898 */
3846void ieee80211_rx_napi(struct ieee80211_hw *hw, struct sk_buff *skb,
3847 struct napi_struct *napi);
3899void ieee80211_rx_napi(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
3900 struct sk_buff *skb, struct napi_struct *napi);
3848
3849/**
3850 * ieee80211_rx - receive frame
3851 *
3852 * Use this function to hand received frames to mac80211. The receive
3853 * buffer in @skb must start with an IEEE 802.11 header. In case of a
3854 * paged @skb is used, the driver is recommended to put the ieee80211
3855 * header of the frame on the linear part of the @skb to avoid memory

--- 7 unchanged lines hidden (view full) ---

3863 *
3864 * In process context use instead ieee80211_rx_ni().
3865 *
3866 * @hw: the hardware this frame came in on
3867 * @skb: the buffer to receive, owned by mac80211 after this call
3868 */
3869static inline void ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb)
3870{
3901
3902/**
3903 * ieee80211_rx - receive frame
3904 *
3905 * Use this function to hand received frames to mac80211. The receive
3906 * buffer in @skb must start with an IEEE 802.11 header. In case of a
3907 * paged @skb is used, the driver is recommended to put the ieee80211
3908 * header of the frame on the linear part of the @skb to avoid memory

--- 7 unchanged lines hidden (view full) ---

3916 *
3917 * In process context use instead ieee80211_rx_ni().
3918 *
3919 * @hw: the hardware this frame came in on
3920 * @skb: the buffer to receive, owned by mac80211 after this call
3921 */
3922static inline void ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb)
3923{
3871 ieee80211_rx_napi(hw, skb, NULL);
3924 ieee80211_rx_napi(hw, NULL, skb, NULL);
3872}
3873
3874/**
3875 * ieee80211_rx_irqsafe - receive frame
3876 *
3877 * Like ieee80211_rx() but can be called in IRQ context
3878 * (internally defers to a tasklet.)
3879 *

--- 66 unchanged lines hidden (view full) ---

3946
3947 local_bh_disable();
3948 ret = ieee80211_sta_ps_transition(sta, start);
3949 local_bh_enable();
3950
3951 return ret;
3952}
3953
3925}
3926
3927/**
3928 * ieee80211_rx_irqsafe - receive frame
3929 *
3930 * Like ieee80211_rx() but can be called in IRQ context
3931 * (internally defers to a tasklet.)
3932 *

--- 66 unchanged lines hidden (view full) ---

3999
4000 local_bh_disable();
4001 ret = ieee80211_sta_ps_transition(sta, start);
4002 local_bh_enable();
4003
4004 return ret;
4005}
4006
4007/**
4008 * ieee80211_sta_pspoll - PS-Poll frame received
4009 * @sta: currently connected station
4010 *
4011 * When operating in AP mode with the %IEEE80211_HW_AP_LINK_PS flag set,
4012 * use this function to inform mac80211 that a PS-Poll frame from a
4013 * connected station was received.
4014 * This must be used in conjunction with ieee80211_sta_ps_transition()
4015 * and possibly ieee80211_sta_uapsd_trigger(); calls to all three must
4016 * be serialized.
4017 */
4018void ieee80211_sta_pspoll(struct ieee80211_sta *sta);
4019
4020/**
4021 * ieee80211_sta_uapsd_trigger - (potential) U-APSD trigger frame received
4022 * @sta: currently connected station
4023 * @tid: TID of the received (potential) trigger frame
4024 *
4025 * When operating in AP mode with the %IEEE80211_HW_AP_LINK_PS flag set,
4026 * use this function to inform mac80211 that a (potential) trigger frame
4027 * from a connected station was received.
4028 * This must be used in conjunction with ieee80211_sta_ps_transition()
4029 * and possibly ieee80211_sta_pspoll(); calls to all three must be
4030 * serialized.
4031 */
4032void ieee80211_sta_uapsd_trigger(struct ieee80211_sta *sta, u8 tid);
4033
3954/*
3955 * The TX headroom reserved by mac80211 for its own tx_status functions.
3956 * This is enough for the radiotap header.
3957 */
3958#define IEEE80211_TX_STATUS_HEADROOM 14
3959
3960/**
3961 * ieee80211_sta_set_buffered - inform mac80211 about driver-buffered frames

--- 396 unchanged lines hidden (view full) ---

4358 *
4359 * Calculate the duration field of some generic frame, given its
4360 * length and transmission rate (in 100kbps).
4361 *
4362 * Return: The duration.
4363 */
4364__le16 ieee80211_generic_frame_duration(struct ieee80211_hw *hw,
4365 struct ieee80211_vif *vif,
4034/*
4035 * The TX headroom reserved by mac80211 for its own tx_status functions.
4036 * This is enough for the radiotap header.
4037 */
4038#define IEEE80211_TX_STATUS_HEADROOM 14
4039
4040/**
4041 * ieee80211_sta_set_buffered - inform mac80211 about driver-buffered frames

--- 396 unchanged lines hidden (view full) ---

4438 *
4439 * Calculate the duration field of some generic frame, given its
4440 * length and transmission rate (in 100kbps).
4441 *
4442 * Return: The duration.
4443 */
4444__le16 ieee80211_generic_frame_duration(struct ieee80211_hw *hw,
4445 struct ieee80211_vif *vif,
4366 enum ieee80211_band band,
4446 enum nl80211_band band,
4367 size_t frame_len,
4368 struct ieee80211_rate *rate);
4369
4370/**
4371 * ieee80211_get_buffered_bc - accessing buffered broadcast and multicast frames
4372 * @hw: pointer as obtained from ieee80211_alloc_hw().
4373 * @vif: &struct ieee80211_vif pointer from the add_interface callback.
4374 *

--- 237 unchanged lines hidden (view full) ---

4612 * ieee80211_scan_completed - completed hardware scan
4613 *
4614 * When hardware scan offload is used (i.e. the hw_scan() callback is
4615 * assigned) this function needs to be called by the driver to notify
4616 * mac80211 that the scan finished. This function can be called from
4617 * any context, including hardirq context.
4618 *
4619 * @hw: the hardware that finished the scan
4447 size_t frame_len,
4448 struct ieee80211_rate *rate);
4449
4450/**
4451 * ieee80211_get_buffered_bc - accessing buffered broadcast and multicast frames
4452 * @hw: pointer as obtained from ieee80211_alloc_hw().
4453 * @vif: &struct ieee80211_vif pointer from the add_interface callback.
4454 *

--- 237 unchanged lines hidden (view full) ---

4692 * ieee80211_scan_completed - completed hardware scan
4693 *
4694 * When hardware scan offload is used (i.e. the hw_scan() callback is
4695 * assigned) this function needs to be called by the driver to notify
4696 * mac80211 that the scan finished. This function can be called from
4697 * any context, including hardirq context.
4698 *
4699 * @hw: the hardware that finished the scan
4620 * @aborted: set to true if scan was aborted
4700 * @info: information about the completed scan
4621 */
4701 */
4622void ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted);
4702void ieee80211_scan_completed(struct ieee80211_hw *hw,
4703 struct cfg80211_scan_info *info);
4623
4624/**
4625 * ieee80211_sched_scan_results - got results from scheduled scan
4626 *
4627 * When a scheduled scan is running, this function needs to be called by the
4628 * driver whenever there are new scan results available.
4629 *
4630 * @hw: the hardware that is performing scheduled scans

--- 680 unchanged lines hidden (view full) ---

5311 void (*add_sta_debugfs)(void *priv, void *priv_sta,
5312 struct dentry *dir);
5313 void (*remove_sta_debugfs)(void *priv, void *priv_sta);
5314
5315 u32 (*get_expected_throughput)(void *priv_sta);
5316};
5317
5318static inline int rate_supported(struct ieee80211_sta *sta,
4704
4705/**
4706 * ieee80211_sched_scan_results - got results from scheduled scan
4707 *
4708 * When a scheduled scan is running, this function needs to be called by the
4709 * driver whenever there are new scan results available.
4710 *
4711 * @hw: the hardware that is performing scheduled scans

--- 680 unchanged lines hidden (view full) ---

5392 void (*add_sta_debugfs)(void *priv, void *priv_sta,
5393 struct dentry *dir);
5394 void (*remove_sta_debugfs)(void *priv, void *priv_sta);
5395
5396 u32 (*get_expected_throughput)(void *priv_sta);
5397};
5398
5399static inline int rate_supported(struct ieee80211_sta *sta,
5319 enum ieee80211_band band,
5400 enum nl80211_band band,
5320 int index)
5321{
5322 return (sta == NULL || sta->supp_rates[band] & BIT(index));
5323}
5324
5325/**
5326 * rate_control_send_low - helper for drivers for management/no-ack frames
5327 *

--- 307 unchanged lines hidden ---
5401 int index)
5402{
5403 return (sta == NULL || sta->supp_rates[band] & BIT(index));
5404}
5405
5406/**
5407 * rate_control_send_low - helper for drivers for management/no-ack frames
5408 *

--- 307 unchanged lines hidden ---