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 --- |