update nl80211.h
PATCH 1/2 update nl80211.h
Signed-off-by Dmitry Lebed <[email protected]>
--- nl80211.h | 136 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 134 insertions(+), 2 deletions(-)
nl80211.h +134 -2
@@ -542,7 +542,8 @@* IEs in %NL80211_ATTR_IE, %NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_USE_MFP, * %NL80211_ATTR_MAC, %NL80211_ATTR_WIPHY_FREQ, %NL80211_ATTR_CONTROL_PORT, * %NL80211_ATTR_CONTROL_PORT_ETHERTYPE, -* %NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT, %NL80211_ATTR_MAC_HINT, and +* %NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT, +* %NL80211_ATTR_CONTROL_PORT_OVER_NL80211, %NL80211_ATTR_MAC_HINT, and * %NL80211_ATTR_WIPHY_FREQ_HINT. * If included, %NL80211_ATTR_MAC and %NL80211_ATTR_WIPHY_FREQ are * restrictions on BSS selection, i.e., they effectively prevent roaming
@@ -990,8 +991,45 @@* &NL80211_CMD_CONNECT or &NL80211_CMD_ROAM. If the 4 way handshake failed * &NL80211_CMD_DISCONNECT should be indicated instead. * +* @NL80211_CMD_CONTROL_PORT_FRAME: Control Port (e.g. PAE) frame TX request +* and RX notification. This command is used both as a request to transmit +* a control port frame and as a notification that a control port frame +* has been received. %NL80211_ATTR_FRAME is used to specify the +* frame contents. The frame is the raw EAPoL data, without ethernet or +* 802.11 headers. +* When used as an event indication %NL80211_ATTR_CONTROL_PORT_ETHERTYPE, +* %NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT and %NL80211_ATTR_MAC are added +* indicating the protocol type of the received frame; whether the frame +* was received unencrypted and the MAC address of the peer respectively. +* * @NL80211_CMD_RELOAD_REGDB: Request that the regdb firmware file is reloaded. * +* @NL80211_CMD_EXTERNAL_AUTH: This interface is exclusively defined for host +* drivers that do not define separate commands for authentication and +* association, but rely on user space for the authentication to happen. +* This interface acts both as the event request (driver to user space) +* to trigger the authentication and command response (userspace to +* driver) to indicate the authentication status. +* +* User space uses the %NL80211_CMD_CONNECT command to the host driver to +* trigger a connection. The host driver selects a BSS and further uses +* this interface to offload only the authentication part to the user +* space. Authentication frames are passed between the driver and user +* space through the %NL80211_CMD_FRAME interface. Host driver proceeds +* further with the association after getting successful authentication +* status. User space indicates the authentication status through +* %NL80211_ATTR_STATUS_CODE attribute in %NL80211_CMD_EXTERNAL_AUTH +* command interface. +* +* Host driver reports this status on an authentication failure to the +* user space through the connect result as the user space would have +* initiated the connection through the connect request. +* +* @NL80211_CMD_STA_OPMODE_CHANGED: An event that notify station's +* ht opmode or vht opmode changes using any of &NL80211_ATTR_SMPS_MODE, +* &NL80211_ATTR_CHANNEL_WIDTH,&NL80211_ATTR_NSS attributes with its +* address(specified in &NL80211_ATTR_MAC). +* * @NL80211_CMD_MAX: highest used command number * @__NL80211_CMD_AFTER_LAST: internal use */
@@ -1198,6 +1236,12 @@ enum nl80211_commands {NL80211_CMD_RELOAD_REGDB , +NL80211_CMD_EXTERNAL_AUTH , + +NL80211_CMD_STA_OPMODE_CHANGED , + + NL80211_CMD_CONTROL_PORT_FRAME, +/* add new commands above here */ /* used to define NL80211_CMD_MAX below */
@@ -1445,6 +1489,15 @@ enum nl80211_commands {* @NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT: When included along with * %NL80211_ATTR_CONTROL_PORT_ETHERTYPE, indicates that the custom * ethertype frames used for key negotiation must not be encrypted. +* @NL80211_ATTR_CONTROL_PORT_OVER_NL80211: A flag indicating whether control +* port frames (e.g. of type given in %NL80211_ATTR_CONTROL_PORT_ETHERTYPE) +* will be sent directly to the network interface or sent via the NL80211 +* socket. If this attribute is missing, then legacy behavior of sending +* control port frames directly to the network interface is used. If the +* flag is included, then control port frames are sent over NL80211 instead +* using %CMD_CONTROL_PORT_FRAME. If control port routing over NL80211 is +* to be used then userspace must also use the %NL80211_ATTR_SOCKET_OWNER +* flag. * * @NL80211_ATTR_TESTDATA: Testmode data blob, passed through to the driver. * We recommend using nested, driver-specific attributes within this.
@@ -1932,6 +1985,12 @@ enum nl80211_commands {* multicast group. * If set during %NL80211_CMD_ASSOCIATE or %NL80211_CMD_CONNECT the * station will deauthenticate when the socket is closed. +* If set during %NL80211_CMD_JOIN_IBSS the IBSS will be automatically +* torn down when the socket is closed. +* If set during %NL80211_CMD_JOIN_MESH the mesh setup will be +* automatically torn down when the socket is closed. +* If set during %NL80211_CMD_START_AP the AP will be automatically +* disabled when the socket is closed. * * @NL80211_ATTR_TDLS_INITIATOR: flag attribute indicating the current end is * the TDLS link initiator.
@@ -2153,6 +2212,19 @@ enum nl80211_commands {* @NL80211_ATTR_PMKR0_NAME: PMK-R0 Name for offloaded FT. * @NL80211_ATTR_PORT_AUTHORIZED: (reserved) * +* @NL80211_ATTR_EXTERNAL_AUTH_ACTION: Identify the requested external +* authentication operation (u32 attribute with an +* &enum nl80211_external_auth_action value). This is used with the +* &NL80211_CMD_EXTERNAL_AUTH request event. +* @NL80211_ATTR_EXTERNAL_AUTH_SUPPORT: Flag attribute indicating that the user +* space supports external authentication. This attribute shall be used +* only with %NL80211_CMD_CONNECT request. The driver may offload +* authentication processing to user space if this capability is indicated +* in NL80211_CMD_CONNECT requests from the user space. +* +* @NL80211_ATTR_NSS: Station's New/updated RX_NSS value notified using this +* u8 attribute. This is used with %NL80211_CMD_STA_OPMODE_CHANGED. +* * @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -2579,6 +2651,14 @@ enum nl80211_attrs {NL80211_ATTR_PMKR0_NAME ,NL80211_ATTR_PORT_AUTHORIZED , +NL80211_ATTR_EXTERNAL_AUTH_ACTION , +NL80211_ATTR_EXTERNAL_AUTH_SUPPORT , + +NL80211_ATTR_NSS , +NL80211_ATTR_ACK_SIGNAL , + +NL80211_ATTR_CONTROL_PORT_OVER_NL80211 , +/* add attributes here, update the policy in nl80211.c */ __NL80211_ATTR_AFTER_LAST,
@@ -2899,6 +2979,7 @@ enum nl80211_sta_bss_param {* @NL80211_STA_INFO_RX_DURATION: aggregate PPDU duration for all frames * received from the station (u64, usec) * @NL80211_STA_INFO_PAD: attribute used for padding for 64-bit alignment +* @NL80211_STA_INFO_ACK_SIGNAL: signal strength of the last ACK frame(u8, dBm) * @__NL80211_STA_INFO_AFTER_LAST: internal * @NL80211_STA_INFO_MAX: highest possible station info attribute */
@@ -2937,6 +3018,7 @@ enum nl80211_sta_info {NL80211_STA_INFO_TID_STATS ,NL80211_STA_INFO_RX_DURATION ,NL80211_STA_INFO_PAD , +NL80211_STA_INFO_ACK_SIGNAL ,/* keep last */ __NL80211_STA_INFO_AFTER_LAST,
@@ -4945,6 +5027,17 @@ enum nl80211_feature_flags {* probe request tx deferral and suppression * @NL80211_EXT_FEATURE_MFP_OPTIONAL: Driver supports the %NL80211_MFP_OPTIONAL * value in %NL80211_ATTR_USE_MFP. +* @NL80211_EXT_FEATURE_LOW_SPAN_SCAN: Driver supports low span scan. +* @NL80211_EXT_FEATURE_LOW_POWER_SCAN: Driver supports low power scan. +* @NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN: Driver supports high accuracy scan. +* @NL80211_EXT_FEATURE_DFS_OFFLOAD: HW/driver will offload DFS actions. +* Device or driver will do all DFS-related actions by itself, +* informing user-space about CAC progress, radar detection event, +* channel change triggered by radar detection event. +* No need to start CAC from user-space, no need to react to +* "radar detected" event. +* @NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211: Driver supports sending and +* receiving control port frames over nl80211 instead of the netdevice. * * @NUM_NL80211_EXT_FEATURES: number of extended features. * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
@@ -4972,6 +5065,11 @@ enum nl80211_ext_feature_index {NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE ,NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION ,NL80211_EXT_FEATURE_MFP_OPTIONAL , +NL80211_EXT_FEATURE_LOW_SPAN_SCAN , +NL80211_EXT_FEATURE_LOW_POWER_SCAN , +NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN , +NL80211_EXT_FEATURE_DFS_OFFLOAD , +NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211 ,/* add new features before the definition below */ NUM_NL80211_EXT_FEATURES,
@@ -5032,6 +5130,10 @@ enum nl80211_timeout_reason {* of NL80211_CMD_TRIGGER_SCAN and NL80211_CMD_START_SCHED_SCAN * requests. * +* NL80211_SCAN_FLAG_LOW_SPAN, NL80211_SCAN_FLAG_LOW_POWER, and +* NL80211_SCAN_FLAG_HIGH_ACCURACY flags are exclusive of each other, i.e., only +* one of them can be used in the request. +* * @NL80211_SCAN_FLAG_LOW_PRIORITY: scan request has low priority * @NL80211_SCAN_FLAG_FLUSH: flush cache before scanning * @NL80211_SCAN_FLAG_AP: force a scan even if the interface is configured
@@ -5059,7 +5161,20 @@ enum nl80211_timeout_reason {* and suppression (if it has received a broadcast Probe Response frame, * Beacon frame or FILS Discovery frame from an AP that the STA considers * a suitable candidate for (re-)association - suitable in terms of -* SSID and/or RSSI +* SSID and/or RSSI. +* @NL80211_SCAN_FLAG_LOW_SPAN: Span corresponds to the total time taken to +* accomplish the scan. Thus, this flag intends the driver to perform the +* scan request with lesser span/duration. It is specific to the driver +* implementations on how this is accomplished. Scan accuracy may get +* impacted with this flag. +* @NL80211_SCAN_FLAG_LOW_POWER: This flag intends the scan attempts to consume +* optimal possible power. Drivers can resort to their specific means to +* optimize the power. Scan accuracy may get impacted with this flag. +* @NL80211_SCAN_FLAG_HIGH_ACCURACY: Accuracy here intends to the extent of scan +* results obtained. Thus HIGH_ACCURACY scan flag aims to get maximum +* possible scan results. This flag hints the driver to use the best +* possible scan configuration to improve the accuracy in scanning. +* Latency and power use may get impacted with this flag. */ enum nl80211_scan_flags {NL80211_SCAN_FLAG_LOW_PRIORITY =1 <<0 ,
@@ -5070,6 +5185,9 @@ enum nl80211_scan_flags {NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP =1 <<5 ,NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE =1 <<6 ,NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION =1 <<7 , +NL80211_SCAN_FLAG_LOW_SPAN =1 <<8 , +NL80211_SCAN_FLAG_LOW_POWER =1 <<9 , + NL80211_SCAN_FLAG_HIGH_ACCURACY = 1<<10, };/**
@@ -5127,6 +5245,8 @@ enum nl80211_smps_mode {* non-operating channel is expired and no longer valid. New CAC must * be done on this channel before starting the operation. This is not * applicable for ETSI dfs domain where pre-CAC is valid for ever. +* @NL80211_RADAR_CAC_STARTED: Channel Availability Check has been started, +* should be generated by HW if NL80211_EXT_FEATURE_DFS_OFFLOAD is enabled. */ enum nl80211_radar_event {NL80211_RADAR_DETECTED ,
@@ -5134,6 +5254,7 @@ enum nl80211_radar_event {NL80211_RADAR_CAC_ABORTED ,NL80211_RADAR_NOP_FINISHED ,NL80211_RADAR_PRE_CAC_EXPIRED , + NL80211_RADAR_CAC_STARTED, };/**
@@ -5469,4 +5590,15 @@ enum nl80211_nan_match_attributes {NL80211_NAN_MATCH_ATTR_MAX =NUM_NL80211_NAN_MATCH_ATTR -1 }; +/** +* nl80211_external_auth_action - Action to perform with external +* authentication request. Used by NL80211_ATTR_EXTERNAL_AUTH_ACTION. +* @NL80211_EXTERNAL_AUTH_START: Start the authentication. +* @NL80211_EXTERNAL_AUTH_ABORT: Abort the ongoing authentication. +*/ +enum nl80211_external_auth_action { +NL80211_EXTERNAL_AUTH_START , +NL80211_EXTERNAL_AUTH_ABORT , +}; +#endif /* __LINUX_NL80211_H */
Signature · 1 line
2.16.3
PATCH 2/2 iw: add printout of all supported ext_features to phy info
Signed-off-by Dmitry Lebed <[email protected]>
--- info.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 80 insertions(+), 6 deletions(-)
info.c +80 -6
@@ -69,6 +69,14 @@ static int ext_feature_isset(const unsigned char *ext_features, int ext_featuresreturn (ft_byte &BIT (ftidx %8 )) !=0 ; } +static void ext_feat_print (const struct nlattr *tb, +enum nl80211_ext_feature_index idx, +const char *feature_name,const char *feature_desc) +{ +if (ext_feature_isset (nla_data (tb),nla_len (tb),idx)) +printf ("\t\t* [ %s ]: %s\n" , feature_name, feature_desc); +} +static int print_phy_handler (struct nl_msg *msg,void *arg) {struct nlattr *tb_msg[NL80211_ATTR_MAX +1 ];
@@ -603,17 +611,83 @@ broken_combination:printf ("\tDevice supports TDLS channel switching\n" ); } +if (tb_msg[NL80211_ATTR_TDLS_SUPPORT ]) +printf ("\tDevice supports T-DLS.\n" ); +if (tb_msg[NL80211_ATTR_EXT_FEATURES ]) {struct nlattr *tb = tb_msg[NL80211_ATTR_EXT_FEATURES ]; -if (ext_feature_isset (nla_data (tb),nla_len (tb), -NL80211_EXT_FEATURE_VHT_IBSS )) -printf ("\tDevice supports VHT-IBSS.\n" ); +printf ("\tSupported extended features:\n" ); + +ext_feat_print (tb,NL80211_EXT_FEATURE_VHT_IBSS , +"VHT_IBSS" ,"VHT-IBSS" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_RRM , +"RRM" ,"RRM" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER , +"MU_MIMO_AIR_SNIFFER" ,"MU-MIMO sniffer" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_SCAN_START_TIME , +"SCAN_START_TIME" ,"scan start timestamp" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_BSS_PARENT_TSF , +"BSS_PARENT_TSF" ,"BSS last beacon/probe TSF" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_SET_SCAN_DWELL , +"SET_SCAN_DWELL" ,"scan dwell setting" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_BEACON_RATE_LEGACY , +"BEACON_RATE_LEGACY" ,"legacy beacon rate setting" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_BEACON_RATE_HT , +"BEACON_RATE_HT" ,"HT beacon rate setting" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_BEACON_RATE_VHT , +"BEACON_RATE_VHT" ,"VHT beacon rate setting" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_FILS_STA , +"FILS_STA" ,"STA FILS (Fast Initial Link Setup)" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA , +"MGMT_TX_RANDOM_TA" , +"randomized TA while not associated" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED , +"MGMT_TX_RANDOM_TA_CONNECTED" , +"randomized TA while associated" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI , +"SCHED_SCAN_RELATIVE_RSSI" , +"sched_scan for BSS with better RSSI report" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_CQM_RSSI_LIST , +"CQM_RSSI_LIST" , +"multiple CQM_RSSI_THOLD records" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_FILS_SK_OFFLOAD , +"FILS_SK_OFFLOAD" , +"FILS shared key authentication offload" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK , +"4WAY_HANDSHAKE_STA_PSK" , +"4-way handshake with PSK in station mode" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X , +"4WAY_HANDSHAKE_STA_1X" , +"4-way handshake with 802.1X in station mode" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME , +"FILS_MAX_CHANNEL_TIME" , +"FILS max channel attribute override with dwell time" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP , +"ACCEPT_BCAST_PROBE_RESP" , +"accepts broadcast probe response" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE , +"OCE_PROBE_REQ_HIGH_TX_RATE" , +"probe request TX at high rate (at least 5.5Mbps)" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION , +"OCE_PROBE_REQ_DEFERRAL_SUPPRESSION" , +"probe request tx deferral and suppression" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_MFP_OPTIONAL , +"MFP_OPTIONAL" , +"MFP_OPTIONAL value in ATTR_USE_MFP" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_LOW_SPAN_SCAN , +"LOW_SPAN_SCAN" ,"low span scan" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_LOW_POWER_SCAN , +"LOW_POWER_SCAN" ,"low power scan" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN , +"HIGH_ACCURACY_SCAN" ,"high accuracy scan" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_DFS_OFFLOAD , +"DFS_OFFLOAD" ,"DFS offload" ); +ext_feat_print (tb,NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211 , +"CONTROL_PORT_OVER_NL80211" , +"control port over nl80211" ); } -if (tb_msg[NL80211_ATTR_TDLS_SUPPORT ]) -printf ("\tDevice supports T-DLS.\n" ); -if (tb_msg[NL80211_ATTR_COALESCE_RULE ]) {struct nl80211_coalesce_rule_support *rule;struct nl80211_pattern_support *pat;
Signature · 1 line
2.16.3