1cd4e3c3eSJouni Malinen /* 2cd4e3c3eSJouni Malinen * Sigma Control API DUT (station/AP) 3cd4e3c3eSJouni Malinen * Copyright (c) 2010-2011, Atheros Communications, Inc. 49c381f59SAmarnath Hullur Subramanyam * Copyright (c) 2011-2017, Qualcomm Atheros, Inc. 5cd4e3c3eSJouni Malinen * All Rights Reserved. 6cd4e3c3eSJouni Malinen * Licensed under the Clear BSD license. See README for more details. 7cd4e3c3eSJouni Malinen */ 8cd4e3c3eSJouni Malinen 9cd4e3c3eSJouni Malinen #ifndef SIGMA_DUT_H 10cd4e3c3eSJouni Malinen #define SIGMA_DUT_H 11cd4e3c3eSJouni Malinen 129981b511SLior David #ifdef __GNUC__ 139981b511SLior David #define _GNU_SOURCE 1 149981b511SLior David #endif 159981b511SLior David 16cd4e3c3eSJouni Malinen #include <stdlib.h> 17cd4e3c3eSJouni Malinen #include <stdio.h> 18cd4e3c3eSJouni Malinen #include <stdarg.h> 19cd4e3c3eSJouni Malinen #include <string.h> 20cd4e3c3eSJouni Malinen #include <errno.h> 21cd4e3c3eSJouni Malinen #include <unistd.h> 22cd4e3c3eSJouni Malinen #include <time.h> 23cd4e3c3eSJouni Malinen #include <sys/time.h> 24cd4e3c3eSJouni Malinen #include <sys/types.h> 25cd4e3c3eSJouni Malinen #include <sys/socket.h> 26cd4e3c3eSJouni Malinen #include <net/if.h> 27cd4e3c3eSJouni Malinen #ifdef __QNXNTO__ 28cd4e3c3eSJouni Malinen #include <sys/select.h> 29cd4e3c3eSJouni Malinen #include <net/if_ether.h> 30cd4e3c3eSJouni Malinen #endif /* __QNXNTO__ */ 31cd4e3c3eSJouni Malinen #include <netinet/in.h> 32cd4e3c3eSJouni Malinen #include <arpa/inet.h> 33cd4e3c3eSJouni Malinen #ifdef CONFIG_TRAFFIC_AGENT 34cd4e3c3eSJouni Malinen #include <pthread.h> 35cd4e3c3eSJouni Malinen #endif /* CONFIG_TRAFFIC_AGENT */ 36cd4e3c3eSJouni Malinen 37cd4e3c3eSJouni Malinen 38cd4e3c3eSJouni Malinen #ifdef __GNUC__ 39cd4e3c3eSJouni Malinen #define PRINTF_FORMAT(a,b) __attribute__ ((format (printf, (a), (b)))) 40cd4e3c3eSJouni Malinen #else 41cd4e3c3eSJouni Malinen #define PRINTF_FORMAT(a,b) 42cd4e3c3eSJouni Malinen #endif 43cd4e3c3eSJouni Malinen 44cd4e3c3eSJouni Malinen #ifndef SIGMA_TMPDIR 45cd4e3c3eSJouni Malinen #define SIGMA_TMPDIR "/tmp" 46cd4e3c3eSJouni Malinen #endif /* SIGMA_TMPDIR */ 47cd4e3c3eSJouni Malinen 48cd4e3c3eSJouni Malinen #ifndef SIGMA_DUT_VER 49cd4e3c3eSJouni Malinen #define SIGMA_DUT_VER "(unknown)" 50cd4e3c3eSJouni Malinen #endif /* SIGMA_DUT_VER */ 51cd4e3c3eSJouni Malinen 52cd4e3c3eSJouni Malinen #ifndef ETH_ALEN 53cd4e3c3eSJouni Malinen #define ETH_ALEN 6 54cd4e3c3eSJouni Malinen #endif 55cd4e3c3eSJouni Malinen 56cd4e3c3eSJouni Malinen #ifndef ETH_P_ARP 57cd4e3c3eSJouni Malinen #define ETH_P_ARP 0x0806 58cd4e3c3eSJouni Malinen #endif 59cd4e3c3eSJouni Malinen 60cd4e3c3eSJouni Malinen struct sigma_dut; 61cd4e3c3eSJouni Malinen 62cd4e3c3eSJouni Malinen #define MAX_PARAMS 100 63cd4e3c3eSJouni Malinen #define MAX_RADIO 2 64cd4e3c3eSJouni Malinen 65cd4e3c3eSJouni Malinen /* Set default operating channel width 80 MHz */ 66cd4e3c3eSJouni Malinen #define VHT_DEFAULT_OPER_CHWIDTH AP_80_VHT_OPER_CHWIDTH 67cd4e3c3eSJouni Malinen 68cd4e3c3eSJouni Malinen typedef unsigned int u32; 69cd4e3c3eSJouni Malinen typedef unsigned char u8; 70cd4e3c3eSJouni Malinen 71cd4e3c3eSJouni Malinen #define WPA_GET_BE32(a) ((((u32) (a)[0]) << 24) | (((u32) (a)[1]) << 16) | \ 72cd4e3c3eSJouni Malinen (((u32) (a)[2]) << 8) | ((u32) (a)[3])) 73cd4e3c3eSJouni Malinen #define WPA_PUT_BE32(a, val) \ 74cd4e3c3eSJouni Malinen do { \ 75cd4e3c3eSJouni Malinen (a)[0] = (u8) ((((u32) (val)) >> 24) & 0xff); \ 76cd4e3c3eSJouni Malinen (a)[1] = (u8) ((((u32) (val)) >> 16) & 0xff); \ 77cd4e3c3eSJouni Malinen (a)[2] = (u8) ((((u32) (val)) >> 8) & 0xff); \ 78cd4e3c3eSJouni Malinen (a)[3] = (u8) (((u32) (val)) & 0xff); \ 79cd4e3c3eSJouni Malinen } while (0) 80cd4e3c3eSJouni Malinen 81cd4e3c3eSJouni Malinen struct sigma_cmd { 82cd4e3c3eSJouni Malinen char *params[MAX_PARAMS]; 83cd4e3c3eSJouni Malinen char *values[MAX_PARAMS]; 84cd4e3c3eSJouni Malinen int count; 85cd4e3c3eSJouni Malinen }; 86cd4e3c3eSJouni Malinen 87cd4e3c3eSJouni Malinen #define MAX_CMD_LEN 2048 88cd4e3c3eSJouni Malinen 89cd4e3c3eSJouni Malinen struct sigma_conn { 90cd4e3c3eSJouni Malinen int s; 91cd4e3c3eSJouni Malinen struct sockaddr_in addr; 92cd4e3c3eSJouni Malinen socklen_t addrlen; 93cd4e3c3eSJouni Malinen char buf[MAX_CMD_LEN + 5]; 94cd4e3c3eSJouni Malinen int pos; 95cd4e3c3eSJouni Malinen int waiting_completion; 96cd4e3c3eSJouni Malinen }; 97cd4e3c3eSJouni Malinen 98cd4e3c3eSJouni Malinen #define SIGMA_DUT_ERROR_CALLER_SEND_STATUS -2 99cd4e3c3eSJouni Malinen #define SIGMA_DUT_INVALID_CALLER_SEND_STATUS -1 100cd4e3c3eSJouni Malinen #define SIGMA_DUT_SUCCESS_STATUS_SENT 0 101cd4e3c3eSJouni Malinen #define SIGMA_DUT_SUCCESS_CALLER_SEND_STATUS 1 102cd4e3c3eSJouni Malinen 103cd4e3c3eSJouni Malinen struct sigma_cmd_handler { 104cd4e3c3eSJouni Malinen struct sigma_cmd_handler *next; 105cd4e3c3eSJouni Malinen char *cmd; 106cd4e3c3eSJouni Malinen int (*validate)(struct sigma_cmd *cmd); 107cd4e3c3eSJouni Malinen /* process return value: 108cd4e3c3eSJouni Malinen * -2 = failed, caller will send status,ERROR 109cd4e3c3eSJouni Malinen * -1 = failed, caller will send status,INVALID 110cd4e3c3eSJouni Malinen * 0 = success, response already sent 111cd4e3c3eSJouni Malinen * 1 = success, caller will send status,COMPLETE 112cd4e3c3eSJouni Malinen */ 113cd4e3c3eSJouni Malinen int (*process)(struct sigma_dut *dut, struct sigma_conn *conn, 114cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 115cd4e3c3eSJouni Malinen }; 116cd4e3c3eSJouni Malinen 117cd4e3c3eSJouni Malinen #define P2P_GRP_ID_LEN 128 118cd4e3c3eSJouni Malinen #define IP_ADDR_STR_LEN 16 119cd4e3c3eSJouni Malinen 120cd4e3c3eSJouni Malinen struct wfa_cs_p2p_group { 121cd4e3c3eSJouni Malinen struct wfa_cs_p2p_group *next; 122cd4e3c3eSJouni Malinen char ifname[IFNAMSIZ]; 123cd4e3c3eSJouni Malinen int go; 124cd4e3c3eSJouni Malinen char grpid[P2P_GRP_ID_LEN]; 125cd4e3c3eSJouni Malinen char ssid[33]; 126cd4e3c3eSJouni Malinen }; 127cd4e3c3eSJouni Malinen 128cd4e3c3eSJouni Malinen #ifdef CONFIG_TRAFFIC_AGENT 129cd4e3c3eSJouni Malinen 130cd4e3c3eSJouni Malinen #define MAX_SIGMA_STREAMS 16 131cd4e3c3eSJouni Malinen #define MAX_SIGMA_STATS 6000 132cd4e3c3eSJouni Malinen 133cd4e3c3eSJouni Malinen struct sigma_frame_stats { 134cd4e3c3eSJouni Malinen unsigned int seqnum; 135cd4e3c3eSJouni Malinen unsigned int local_sec; 136cd4e3c3eSJouni Malinen unsigned int local_usec; 137cd4e3c3eSJouni Malinen unsigned int remote_sec; 138cd4e3c3eSJouni Malinen unsigned int remote_usec; 139cd4e3c3eSJouni Malinen }; 140cd4e3c3eSJouni Malinen 141cd4e3c3eSJouni Malinen struct sigma_stream { 142cd4e3c3eSJouni Malinen enum sigma_stream_profile { 143cd4e3c3eSJouni Malinen SIGMA_PROFILE_FILE_TRANSFER, 144cd4e3c3eSJouni Malinen SIGMA_PROFILE_MULTICAST, 145cd4e3c3eSJouni Malinen SIGMA_PROFILE_IPTV, 146cd4e3c3eSJouni Malinen SIGMA_PROFILE_TRANSACTION, 147cd4e3c3eSJouni Malinen SIGMA_PROFILE_START_SYNC, 148cd4e3c3eSJouni Malinen SIGMA_PROFILE_UAPSD 149cd4e3c3eSJouni Malinen } profile; 150cd4e3c3eSJouni Malinen int sender; 151cd4e3c3eSJouni Malinen struct in_addr dst; 152cd4e3c3eSJouni Malinen int dst_port; 153cd4e3c3eSJouni Malinen struct in_addr src; 154cd4e3c3eSJouni Malinen int src_port; 155cd4e3c3eSJouni Malinen int frame_rate; 156cd4e3c3eSJouni Malinen int duration; 157c2493f83SJouni Malinen unsigned int payload_size; 158cd4e3c3eSJouni Malinen int start_delay; 159cd4e3c3eSJouni Malinen int max_cnt; 160cd4e3c3eSJouni Malinen enum sigma_traffic_class { 161cd4e3c3eSJouni Malinen SIGMA_TC_VOICE, 162cd4e3c3eSJouni Malinen SIGMA_TC_VIDEO, 163cd4e3c3eSJouni Malinen SIGMA_TC_BACKGROUND, 164cd4e3c3eSJouni Malinen SIGMA_TC_BEST_EFFORT 165cd4e3c3eSJouni Malinen } tc; 166cd4e3c3eSJouni Malinen int user_priority; 167cd4e3c3eSJouni Malinen int user_priority_set; 168cd4e3c3eSJouni Malinen int started; 169cd4e3c3eSJouni Malinen int no_timestamps; 170cd4e3c3eSJouni Malinen 171cd4e3c3eSJouni Malinen int sock; 172cd4e3c3eSJouni Malinen pthread_t thr; 173cd4e3c3eSJouni Malinen int stop; 174cd4e3c3eSJouni Malinen int ta_send_in_progress; 175cd4e3c3eSJouni Malinen int trans_proto; 176cd4e3c3eSJouni Malinen 177cd4e3c3eSJouni Malinen /* Statistics */ 178cd4e3c3eSJouni Malinen int tx_act_frames; /* 179cd4e3c3eSJouni Malinen * Number of frames generated by the traffic 180cd4e3c3eSJouni Malinen * generator application. The name is defined in the 181cd4e3c3eSJouni Malinen * Sigma CAPI spec. 182cd4e3c3eSJouni Malinen */ 183cd4e3c3eSJouni Malinen int tx_frames; 184cd4e3c3eSJouni Malinen int rx_frames; 185cd4e3c3eSJouni Malinen unsigned long long tx_payload_bytes; 186cd4e3c3eSJouni Malinen unsigned long long rx_payload_bytes; 187cd4e3c3eSJouni Malinen int out_of_seq_frames; 188cd4e3c3eSJouni Malinen struct sigma_frame_stats *stats; 189cd4e3c3eSJouni Malinen unsigned int num_stats; 190cd4e3c3eSJouni Malinen unsigned int stream_id; 191cd4e3c3eSJouni Malinen 192cd4e3c3eSJouni Malinen /* U-APSD */ 193cd4e3c3eSJouni Malinen unsigned int sta_id; 194cd4e3c3eSJouni Malinen unsigned int rx_cookie; 195cd4e3c3eSJouni Malinen unsigned int uapsd_sta_tc; 196cd4e3c3eSJouni Malinen unsigned int uapsd_rx_state; 197cd4e3c3eSJouni Malinen unsigned int uapsd_tx_state; 198cd4e3c3eSJouni Malinen unsigned int tx_stop_cnt; 199cd4e3c3eSJouni Malinen unsigned int tx_hello_cnt; 200cd4e3c3eSJouni Malinen pthread_t uapsd_send_thr; 201cd4e3c3eSJouni Malinen pthread_cond_t tx_thr_cond; 202cd4e3c3eSJouni Malinen pthread_mutex_t tx_thr_mutex; 203cd4e3c3eSJouni Malinen int reset_rx; 204cd4e3c3eSJouni Malinen int num_retry; 205cd4e3c3eSJouni Malinen char ifname[IFNAMSIZ]; /* ifname from the command */ 206cd4e3c3eSJouni Malinen struct sigma_dut *dut; /* for traffic agent thread to access context */ 20779594049SPradeep Reddy POTTETI /* console */ 20879594049SPradeep Reddy POTTETI char test_name[9]; /* test case name */ 20979594049SPradeep Reddy POTTETI int can_quit; 21079594049SPradeep Reddy POTTETI int reset; 211cd4e3c3eSJouni Malinen }; 212cd4e3c3eSJouni Malinen 213cd4e3c3eSJouni Malinen #endif /* CONFIG_TRAFFIC_AGENT */ 214cd4e3c3eSJouni Malinen 215cd4e3c3eSJouni Malinen 216cd4e3c3eSJouni Malinen #define NUM_AP_AC 4 217cd4e3c3eSJouni Malinen #define AP_AC_BE 0 218cd4e3c3eSJouni Malinen #define AP_AC_BK 1 219cd4e3c3eSJouni Malinen #define AP_AC_VI 2 220cd4e3c3eSJouni Malinen #define AP_AC_VO 3 221cd4e3c3eSJouni Malinen 222b7b297f2SAdil Saeed Musthafa #define MAX_WLAN_TAGS 3 22369063725SAdil Saeed Musthafa #define MBO_MAX_PREF_BSSIDS 10 2244ec61bd9SAdil Saeed Musthafa #define MAX_FT_BSS_LIST 10 225b7b297f2SAdil Saeed Musthafa 22657fa3d83SJouni Malinen enum value_not_set_enabled_disabled { 22757fa3d83SJouni Malinen VALUE_NOT_SET, 22857fa3d83SJouni Malinen VALUE_ENABLED, 22957fa3d83SJouni Malinen VALUE_DISABLED 23057fa3d83SJouni Malinen }; 23157fa3d83SJouni Malinen 2324b0cdee4SPradeep Reddy Potteti enum sec_ch_offset { 2334b0cdee4SPradeep Reddy Potteti SEC_CH_NO, 2344b0cdee4SPradeep Reddy Potteti SEC_CH_40ABOVE, 2354b0cdee4SPradeep Reddy Potteti SEC_CH_40BELOW 2364b0cdee4SPradeep Reddy Potteti }; 2374b0cdee4SPradeep Reddy Potteti 23869063725SAdil Saeed Musthafa struct mbo_pref_ap { 23969063725SAdil Saeed Musthafa int ap_ne_class; 24069063725SAdil Saeed Musthafa int ap_ne_op_ch; 24169063725SAdil Saeed Musthafa int ap_ne_pref; 24269063725SAdil Saeed Musthafa unsigned char mac_addr[ETH_ALEN]; 24369063725SAdil Saeed Musthafa }; 24469063725SAdil Saeed Musthafa 245cd4e3c3eSJouni Malinen struct sigma_dut { 246cd4e3c3eSJouni Malinen int s; /* server TCP socket */ 247cd4e3c3eSJouni Malinen int debug_level; 248cd4e3c3eSJouni Malinen int stdout_debug; 249cd4e3c3eSJouni Malinen struct sigma_cmd_handler *cmds; 250cd4e3c3eSJouni Malinen 251cd4e3c3eSJouni Malinen /* Default timeout value (seconds) for commands */ 252cd4e3c3eSJouni Malinen unsigned int default_timeout; 253cd4e3c3eSJouni Malinen 254cd4e3c3eSJouni Malinen int next_streamid; 255cd4e3c3eSJouni Malinen 256cd4e3c3eSJouni Malinen const char *bridge; /* bridge interface to use in AP mode */ 257cd4e3c3eSJouni Malinen 258cd4e3c3eSJouni Malinen enum sigma_mode { 259cd4e3c3eSJouni Malinen SIGMA_MODE_UNKNOWN, 260cd4e3c3eSJouni Malinen SIGMA_MODE_STATION, 261cd4e3c3eSJouni Malinen SIGMA_MODE_AP, 262cd4e3c3eSJouni Malinen SIGMA_MODE_SNIFFER 263cd4e3c3eSJouni Malinen } mode; 264cd4e3c3eSJouni Malinen 265cd4e3c3eSJouni Malinen /* 266cd4e3c3eSJouni Malinen * Local cached values to handle API that does not provide all the 267cd4e3c3eSJouni Malinen * needed information with commands that actually trigger some 268cd4e3c3eSJouni Malinen * operations. 269cd4e3c3eSJouni Malinen */ 270cd4e3c3eSJouni Malinen int listen_chn; 271cd4e3c3eSJouni Malinen int persistent; 272cd4e3c3eSJouni Malinen int intra_bss; 273cd4e3c3eSJouni Malinen int noa_duration; 274cd4e3c3eSJouni Malinen int noa_interval; 275cd4e3c3eSJouni Malinen int noa_count; 276cd4e3c3eSJouni Malinen enum wfa_cs_wps_method { 277cd4e3c3eSJouni Malinen WFA_CS_WPS_NOT_READY, 278cd4e3c3eSJouni Malinen WFA_CS_WPS_PBC, 279cd4e3c3eSJouni Malinen WFA_CS_WPS_PIN_DISPLAY, 280cd4e3c3eSJouni Malinen WFA_CS_WPS_PIN_LABEL, 281cd4e3c3eSJouni Malinen WFA_CS_WPS_PIN_KEYPAD 282cd4e3c3eSJouni Malinen } wps_method; 283cd4e3c3eSJouni Malinen char wps_pin[9]; 284cd4e3c3eSJouni Malinen 285cd4e3c3eSJouni Malinen struct wfa_cs_p2p_group *groups; 286cd4e3c3eSJouni Malinen 287cd4e3c3eSJouni Malinen char infra_ssid[33]; 288cd4e3c3eSJouni Malinen int infra_network_id; 289cd4e3c3eSJouni Malinen 290cd4e3c3eSJouni Malinen enum p2p_mode { 291cd4e3c3eSJouni Malinen P2P_IDLE, P2P_DISCOVER, P2P_LISTEN, P2P_DISABLE 292cd4e3c3eSJouni Malinen } p2p_mode; 293cd4e3c3eSJouni Malinen 294cd4e3c3eSJouni Malinen int go; 295cd4e3c3eSJouni Malinen int p2p_client; 296091e253dSPurushottam Kushwaha char *p2p_ifname; 297cd4e3c3eSJouni Malinen 298cd4e3c3eSJouni Malinen int client_uapsd; 299cd4e3c3eSJouni Malinen 300cd4e3c3eSJouni Malinen char arp_ipaddr[IP_ADDR_STR_LEN]; 301cd4e3c3eSJouni Malinen char arp_ifname[IFNAMSIZ + 1]; 302cd4e3c3eSJouni Malinen 303cd4e3c3eSJouni Malinen enum sta_pmf { 304cd4e3c3eSJouni Malinen STA_PMF_DISABLED, 305cd4e3c3eSJouni Malinen STA_PMF_OPTIONAL, 306cd4e3c3eSJouni Malinen STA_PMF_REQUIRED 307cd4e3c3eSJouni Malinen } sta_pmf; 308cd4e3c3eSJouni Malinen 309cd4e3c3eSJouni Malinen int no_tpk_expiration; 310cd4e3c3eSJouni Malinen 311cd4e3c3eSJouni Malinen int er_oper_performed; 312cd4e3c3eSJouni Malinen char er_oper_bssid[20]; 313cd4e3c3eSJouni Malinen int amsdu_size; 314cd4e3c3eSJouni Malinen int back_rcv_buf; 315cd4e3c3eSJouni Malinen 316cd4e3c3eSJouni Malinen int testbed_flag_txsp; 317cd4e3c3eSJouni Malinen int testbed_flag_rxsp; 318cd4e3c3eSJouni Malinen int chwidth; 319cd4e3c3eSJouni Malinen 320cd4e3c3eSJouni Malinen /* AP configuration */ 321cd4e3c3eSJouni Malinen char ap_ssid[33]; 322b7b297f2SAdil Saeed Musthafa /* 323b7b297f2SAdil Saeed Musthafa * WLAN-TAG of 1 will use 'ap_' variables; 324b7b297f2SAdil Saeed Musthafa * tag higher than 1 will use 'ap_tag_' variables. 325b7b297f2SAdil Saeed Musthafa */ 326b7b297f2SAdil Saeed Musthafa char ap_tag_ssid[MAX_WLAN_TAGS - 1][33]; 327cd4e3c3eSJouni Malinen enum ap_mode { 328cd4e3c3eSJouni Malinen AP_11a, 329cd4e3c3eSJouni Malinen AP_11g, 330cd4e3c3eSJouni Malinen AP_11b, 331cd4e3c3eSJouni Malinen AP_11na, 332cd4e3c3eSJouni Malinen AP_11ng, 333cd4e3c3eSJouni Malinen AP_11ac, 334cd4e3c3eSJouni Malinen AP_inval 335cd4e3c3eSJouni Malinen } ap_mode; 336cd4e3c3eSJouni Malinen int ap_channel; 337cd4e3c3eSJouni Malinen int ap_rts; 338cd4e3c3eSJouni Malinen int ap_frgmnt; 339cd4e3c3eSJouni Malinen int ap_bcnint; 340cd4e3c3eSJouni Malinen struct qos_params { 341cd4e3c3eSJouni Malinen int ac; 342cd4e3c3eSJouni Malinen int cwmin; 343cd4e3c3eSJouni Malinen int cwmax; 344cd4e3c3eSJouni Malinen int aifs; 345cd4e3c3eSJouni Malinen int txop; 346cd4e3c3eSJouni Malinen int acm; 347cd4e3c3eSJouni Malinen } ap_qos[NUM_AP_AC], ap_sta_qos[NUM_AP_AC]; 34857fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_noack; 34957fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_ampdu; 35057fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_amsdu; 35157fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_rx_amsdu; 352cd4e3c3eSJouni Malinen int ap_ampdu_exp; 35357fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_addba_reject; 354cd4e3c3eSJouni Malinen int ap_fixed_rate; 355cd4e3c3eSJouni Malinen int ap_mcs; 356cd4e3c3eSJouni Malinen int ap_rx_streams; 357cd4e3c3eSJouni Malinen int ap_tx_streams; 358cd4e3c3eSJouni Malinen unsigned int ap_vhtmcs_map; 35957fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_ldpc; 36057fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_sig_rts; 361cd4e3c3eSJouni Malinen enum ap_chwidth { 362cd4e3c3eSJouni Malinen AP_20, 363cd4e3c3eSJouni Malinen AP_40, 364cd4e3c3eSJouni Malinen AP_80, 365cd4e3c3eSJouni Malinen AP_160, 366cd4e3c3eSJouni Malinen AP_AUTO 367cd4e3c3eSJouni Malinen } ap_chwidth; 368bf8af292SPradeep Reddy Potteti enum ap_chwidth default_11na_ap_chwidth; 369bf8af292SPradeep Reddy Potteti enum ap_chwidth default_11ng_ap_chwidth; 370cd4e3c3eSJouni Malinen int ap_tx_stbc; 37157fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_dyn_bw_sig; 372cd4e3c3eSJouni Malinen int ap_sgi80; 373cd4e3c3eSJouni Malinen int ap_p2p_mgmt; 374cd4e3c3eSJouni Malinen enum ap_key_mgmt { 375cd4e3c3eSJouni Malinen AP_OPEN, 376cd4e3c3eSJouni Malinen AP_WPA2_PSK, 377cd4e3c3eSJouni Malinen AP_WPA_PSK, 378cd4e3c3eSJouni Malinen AP_WPA2_EAP, 379cd4e3c3eSJouni Malinen AP_WPA_EAP, 380cd4e3c3eSJouni Malinen AP_WPA2_EAP_MIXED, 381cd4e3c3eSJouni Malinen AP_WPA2_PSK_MIXED 382cd4e3c3eSJouni Malinen } ap_key_mgmt; 383b7b297f2SAdil Saeed Musthafa enum ap_tag_key_mgmt { 384cd4e3c3eSJouni Malinen AP2_OPEN, 385b7b297f2SAdil Saeed Musthafa AP2_OSEN, 386b7b297f2SAdil Saeed Musthafa AP2_WPA2_PSK 387b7b297f2SAdil Saeed Musthafa } ap_tag_key_mgmt[MAX_WLAN_TAGS - 1]; 388cd4e3c3eSJouni Malinen int ap_add_sha256; 38924dc7e40SSarvepalli, Rajesh Babu int ap_rsn_preauth; 390cd4e3c3eSJouni Malinen enum ap_pmf { 391cd4e3c3eSJouni Malinen AP_PMF_DISABLED, 392cd4e3c3eSJouni Malinen AP_PMF_OPTIONAL, 393cd4e3c3eSJouni Malinen AP_PMF_REQUIRED 394cd4e3c3eSJouni Malinen } ap_pmf; 395cd4e3c3eSJouni Malinen enum ap_cipher { 396cd4e3c3eSJouni Malinen AP_CCMP, 397cd4e3c3eSJouni Malinen AP_TKIP, 398cd4e3c3eSJouni Malinen AP_WEP, 399cd4e3c3eSJouni Malinen AP_PLAIN, 400cd4e3c3eSJouni Malinen AP_CCMP_TKIP 401cd4e3c3eSJouni Malinen } ap_cipher; 402cd4e3c3eSJouni Malinen char ap_passphrase[65]; 403cd4e3c3eSJouni Malinen char ap_wepkey[27]; 404cd4e3c3eSJouni Malinen char ap_radius_ipaddr[20]; 405cd4e3c3eSJouni Malinen int ap_radius_port; 406cd4e3c3eSJouni Malinen char ap_radius_password[200]; 407cd4e3c3eSJouni Malinen char ap2_radius_ipaddr[20]; 408cd4e3c3eSJouni Malinen int ap2_radius_port; 409cd4e3c3eSJouni Malinen char ap2_radius_password[200]; 410cd4e3c3eSJouni Malinen int ap_tdls_prohibit; 411cd4e3c3eSJouni Malinen int ap_tdls_prohibit_chswitch; 412cd4e3c3eSJouni Malinen int ap_hs2; 413cd4e3c3eSJouni Malinen int ap_dgaf_disable; 414cd4e3c3eSJouni Malinen int ap_p2p_cross_connect; 415cd4e3c3eSJouni Malinen int ap_oper_name; 416cd4e3c3eSJouni Malinen int ap_wan_metrics; 417cd4e3c3eSJouni Malinen int ap_conn_capab; 418cd4e3c3eSJouni Malinen int ap_oper_class; 419cd4e3c3eSJouni Malinen 420cd4e3c3eSJouni Malinen int ap_interworking; 421cd4e3c3eSJouni Malinen int ap_access_net_type; 422cd4e3c3eSJouni Malinen int ap_internet; 423cd4e3c3eSJouni Malinen int ap_venue_group; 424cd4e3c3eSJouni Malinen int ap_venue_type; 425cd4e3c3eSJouni Malinen char ap_hessid[20]; 426cd4e3c3eSJouni Malinen char ap_roaming_cons[100]; 427cd4e3c3eSJouni Malinen int ap_venue_name; 428cd4e3c3eSJouni Malinen int ap_net_auth_type; 429cd4e3c3eSJouni Malinen int ap_nai_realm_list; 430cd4e3c3eSJouni Malinen char ap_domain_name_list[1000]; 431cd4e3c3eSJouni Malinen int ap_ip_addr_type_avail; 432cd4e3c3eSJouni Malinen char ap_plmn_mcc[10][4]; 433cd4e3c3eSJouni Malinen char ap_plmn_mnc[10][4]; 434cd4e3c3eSJouni Malinen int ap_gas_cb_delay; 435cd4e3c3eSJouni Malinen int ap_proxy_arp; 436cd4e3c3eSJouni Malinen int ap2_proxy_arp; 437cd4e3c3eSJouni Malinen int ap_l2tif; 438cd4e3c3eSJouni Malinen int ap_anqpserver; 439cd4e3c3eSJouni Malinen int ap_anqpserver_on; 440cd4e3c3eSJouni Malinen int ap_osu_provider_list; 441cd4e3c3eSJouni Malinen int ap_qos_map_set; 442cd4e3c3eSJouni Malinen int ap_bss_load; 443cd4e3c3eSJouni Malinen char ap_osu_server_uri[10][256]; 444cd4e3c3eSJouni Malinen char ap_osu_ssid[33]; 445cd4e3c3eSJouni Malinen int ap_osu_method[10]; 446cd4e3c3eSJouni Malinen int ap_osu_icon_tag; 447cd4e3c3eSJouni Malinen 448cd4e3c3eSJouni Malinen int ap_fake_pkhash; 449cd4e3c3eSJouni Malinen int ap_disable_protection; 450cd4e3c3eSJouni Malinen int ap_allow_vht_wep; 451cd4e3c3eSJouni Malinen int ap_allow_vht_tkip; 452cd4e3c3eSJouni Malinen 453cd4e3c3eSJouni Malinen enum ap_vht_chwidth { 454cd4e3c3eSJouni Malinen AP_20_40_VHT_OPER_CHWIDTH, 455cd4e3c3eSJouni Malinen AP_80_VHT_OPER_CHWIDTH, 456cd4e3c3eSJouni Malinen AP_160_VHT_OPER_CHWIDTH 457cd4e3c3eSJouni Malinen } ap_vht_chwidth; 458cd4e3c3eSJouni Malinen int ap_txBF; 459cd4e3c3eSJouni Malinen int ap_mu_txBF; 460fba27db5SPradeep Reddy POTTETI enum ap_regulatory_mode { 461fba27db5SPradeep Reddy POTTETI AP_80211D_MODE_DISABLED, 462fba27db5SPradeep Reddy POTTETI AP_80211D_MODE_ENABLED, 463fba27db5SPradeep Reddy POTTETI } ap_regulatory_mode; 464fba27db5SPradeep Reddy POTTETI enum ap_dfs_mode { 465fba27db5SPradeep Reddy POTTETI AP_DFS_MODE_DISABLED, 466fba27db5SPradeep Reddy POTTETI AP_DFS_MODE_ENABLED, 467fba27db5SPradeep Reddy POTTETI } ap_dfs_mode; 468264d544aSpriyadharshini gowthaman int ap_ndpa_frame; 469cd4e3c3eSJouni Malinen 4708e26ff4aSpriyadharshini gowthaman int ap_lci; 4718e26ff4aSpriyadharshini gowthaman char ap_val_lci[33]; 472c2357bdcSpriyadharshini gowthaman char ap_infoz[17]; 4738e26ff4aSpriyadharshini gowthaman int ap_lcr; 4748e26ff4aSpriyadharshini gowthaman char ap_val_lcr[400]; 4758e26ff4aSpriyadharshini gowthaman int ap_rrm; 4768e26ff4aSpriyadharshini gowthaman int ap_rtt; 4778e26ff4aSpriyadharshini gowthaman int ap_neighap; /* number of configured neighbor APs */ 4788e26ff4aSpriyadharshini gowthaman unsigned char ap_val_neighap[3][6]; 4798e26ff4aSpriyadharshini gowthaman int ap_opchannel; /* number of oper channels */ 4808e26ff4aSpriyadharshini gowthaman int ap_val_opchannel[3]; 4818e26ff4aSpriyadharshini gowthaman int ap_scan; 482c2357bdcSpriyadharshini gowthaman int ap_fqdn_held; 483c2357bdcSpriyadharshini gowthaman int ap_fqdn_supl; 484a27b5b6eSpriyadharshini gowthaman int ap_msnt_type; 485a27b5b6eSpriyadharshini gowthaman 486b4e05fc1Spriyadharshini gowthaman int ap_mbo; 487b4e05fc1Spriyadharshini gowthaman int ap_ne_class; 488b4e05fc1Spriyadharshini gowthaman int ap_ne_op_ch; 489b4e05fc1Spriyadharshini gowthaman int ap_set_bssidpref; 490b4e05fc1Spriyadharshini gowthaman int ap_btmreq_disassoc_imnt; 491b4e05fc1Spriyadharshini gowthaman int ap_btmreq_term_bit; 4927d9ae389SAdil Saeed Musthafa int ap_disassoc_timer; 4937d9ae389SAdil Saeed Musthafa int ap_btmreq_bss_term_dur; 494604c8261SAdil Saeed Musthafa enum reg_domain { 495604c8261SAdil Saeed Musthafa REG_DOMAIN_NOT_SET, 496604c8261SAdil Saeed Musthafa REG_DOMAIN_LOCAL, 497604c8261SAdil Saeed Musthafa REG_DOMAIN_GLOBAL 498604c8261SAdil Saeed Musthafa } ap_reg_domain; 499cf752fa7SAdil Saeed Musthafa char ap_mobility_domain[10]; 500023108aeSAdil Saeed Musthafa unsigned char ap_cell_cap_pref; 5014ec61bd9SAdil Saeed Musthafa int ap_ft_oa; 5024ec61bd9SAdil Saeed Musthafa int ap_name; 5034ec61bd9SAdil Saeed Musthafa 50469063725SAdil Saeed Musthafa struct mbo_pref_ap mbo_pref_aps[MBO_MAX_PREF_BSSIDS]; 50569063725SAdil Saeed Musthafa struct mbo_pref_ap mbo_self_ap_tuple; 50669063725SAdil Saeed Musthafa int mbo_pref_ap_cnt; 5074ec61bd9SAdil Saeed Musthafa unsigned char ft_bss_mac_list[MAX_FT_BSS_LIST][ETH_ALEN]; 5084ec61bd9SAdil Saeed Musthafa int ft_bss_mac_cnt; 509b4e05fc1Spriyadharshini gowthaman 510cd4e3c3eSJouni Malinen const char *hostapd_debug_log; 511cd4e3c3eSJouni Malinen 512cd4e3c3eSJouni Malinen #ifdef CONFIG_TRAFFIC_AGENT 513cd4e3c3eSJouni Malinen /* Traffic Agent */ 514cd4e3c3eSJouni Malinen struct sigma_stream streams[MAX_SIGMA_STREAMS]; 515cd4e3c3eSJouni Malinen int stream_id; 516cd4e3c3eSJouni Malinen int num_streams; 517cd4e3c3eSJouni Malinen pthread_t thr; 518cd4e3c3eSJouni Malinen #endif /* CONFIG_TRAFFIC_AGENT */ 519cd4e3c3eSJouni Malinen 520c2493f83SJouni Malinen unsigned int throughput_pktsize; /* If non-zero, override pktsize for 521c2493f83SJouni Malinen * throughput tests */ 522cd4e3c3eSJouni Malinen int no_timestamps; 523cd4e3c3eSJouni Malinen 524cd4e3c3eSJouni Malinen const char *sniffer_ifname; 525cd4e3c3eSJouni Malinen const char *set_macaddr; 526cd4e3c3eSJouni Malinen int tmp_mac_addr; 527cd4e3c3eSJouni Malinen int ap_is_dual; 528cd4e3c3eSJouni Malinen enum ap_mode ap_mode_1; 529cd4e3c3eSJouni Malinen enum ap_chwidth ap_chwidth_1; 530cd4e3c3eSJouni Malinen int ap_channel_1; 531cd4e3c3eSJouni Malinen char ap_countrycode[3]; 532cd4e3c3eSJouni Malinen 533cd4e3c3eSJouni Malinen int ap_wpsnfc; 534cd4e3c3eSJouni Malinen 5350d3db632SPradeep Reddy POTTETI enum ap_wme { 5360d3db632SPradeep Reddy POTTETI AP_WME_OFF, 5370d3db632SPradeep Reddy POTTETI AP_WME_ON, 5380d3db632SPradeep Reddy POTTETI } ap_wme; 5390d3db632SPradeep Reddy POTTETI 54002e3b826SMohammed Shafi Shajakhan enum ap_wmmps { 54102e3b826SMohammed Shafi Shajakhan AP_WMMPS_OFF, 54202e3b826SMohammed Shafi Shajakhan AP_WMMPS_ON, 54302e3b826SMohammed Shafi Shajakhan } ap_wmmps; 54402e3b826SMohammed Shafi Shajakhan 5454b0cdee4SPradeep Reddy Potteti enum sec_ch_offset ap_chwidth_offset; 5464b0cdee4SPradeep Reddy Potteti 547cd4e3c3eSJouni Malinen #ifdef CONFIG_SNIFFER 548cd4e3c3eSJouni Malinen pid_t sniffer_pid; 549cd4e3c3eSJouni Malinen char sniffer_filename[200]; 550cd4e3c3eSJouni Malinen #endif /* CONFIG_SNIFFER */ 551cd4e3c3eSJouni Malinen 552cd4e3c3eSJouni Malinen int last_set_ip_config_ipv6; 5539c381f59SAmarnath Hullur Subramanyam #ifdef MIRACAST 5549c381f59SAmarnath Hullur Subramanyam pthread_t rtsp_thread_handle; 5559c381f59SAmarnath Hullur Subramanyam int wfd_device_type; /* 0 for source, 1 for sink */ 5569c381f59SAmarnath Hullur Subramanyam char peer_mac_address[32]; 5579c381f59SAmarnath Hullur Subramanyam void *miracast_lib; 5589c381f59SAmarnath Hullur Subramanyam const char *miracast_lib_path; 5599c381f59SAmarnath Hullur Subramanyam char mdns_instance_name[64]; 5609c381f59SAmarnath Hullur Subramanyam #endif /* MIRACAST */ 561cd4e3c3eSJouni Malinen 562cd4e3c3eSJouni Malinen int tid_to_handle[8]; /* Mapping of TID to handle */ 563cd4e3c3eSJouni Malinen int dialog_token; /* Used for generating unique handle for an addTs */ 564cd4e3c3eSJouni Malinen 565cd4e3c3eSJouni Malinen enum sigma_program { 566cd4e3c3eSJouni Malinen PROGRAM_UNKNOWN = 0, 567cd4e3c3eSJouni Malinen PROGRAM_TDLS, 568cd4e3c3eSJouni Malinen PROGRAM_HS2, 569cd4e3c3eSJouni Malinen PROGRAM_HS2_R2, 570cd4e3c3eSJouni Malinen PROGRAM_WFD, 571659a34c4SAmarnath Hullur Subramanyam PROGRAM_DISPLAYR2, 572cd4e3c3eSJouni Malinen PROGRAM_PMF, 573cd4e3c3eSJouni Malinen PROGRAM_WPS, 574cd4e3c3eSJouni Malinen PROGRAM_60GHZ, 575cd4e3c3eSJouni Malinen PROGRAM_HT, 576cd4e3c3eSJouni Malinen PROGRAM_VHT, 577cd4e3c3eSJouni Malinen PROGRAM_NAN, 57812dd4145Spriyadharshini gowthaman PROGRAM_LOC, 57933ea287aSAdil Saeed Musthafa PROGRAM_MBO, 58033ea287aSAdil Saeed Musthafa PROGRAM_IOTLP 581cd4e3c3eSJouni Malinen } program; 582cd4e3c3eSJouni Malinen 583cd4e3c3eSJouni Malinen enum device_type { 584cd4e3c3eSJouni Malinen device_type_unknown, 585cd4e3c3eSJouni Malinen AP_unknown, 586cd4e3c3eSJouni Malinen AP_testbed, 587cd4e3c3eSJouni Malinen AP_dut, 588cd4e3c3eSJouni Malinen STA_unknown, 589cd4e3c3eSJouni Malinen STA_testbed, 590cd4e3c3eSJouni Malinen STA_dut 591cd4e3c3eSJouni Malinen } device_type; 592cd4e3c3eSJouni Malinen 593cd4e3c3eSJouni Malinen enum { 594cd4e3c3eSJouni Malinen DEVROLE_UNKNOWN = 0, 595cd4e3c3eSJouni Malinen DEVROLE_STA, 596cd4e3c3eSJouni Malinen DEVROLE_PCP, 597cd4e3c3eSJouni Malinen } dev_role; 598cd4e3c3eSJouni Malinen 599cd4e3c3eSJouni Malinen const char *version; 600cd4e3c3eSJouni Malinen int no_ip_addr_set; 601cd4e3c3eSJouni Malinen int sta_channel; 602cd4e3c3eSJouni Malinen 603cd4e3c3eSJouni Malinen const char *summary_log; 604cd4e3c3eSJouni Malinen const char *hostapd_entropy_log; 605cd4e3c3eSJouni Malinen 606cd4e3c3eSJouni Malinen int iface_down_on_reset; 607cd4e3c3eSJouni Malinen int write_stats; /* traffic stream e2e*.txt files */ 60873d7af09SBala Krishna Bhamidipati int sim_no_username; /* do not set SIM username to use real SIM */ 6095db3b104SJouni Malinen 6105db3b104SJouni Malinen const char *vendor_name; /* device_get_info vendor override */ 6115db3b104SJouni Malinen const char *model_name; /* device_get_info model override */ 6125db3b104SJouni Malinen const char *version_name; /* device_get_info version override */ 6137d37f411SRakesh Sunki 61414cfcd25SRakesh Sunki int ndp_enable; /* Flag which is set once the NDP is setup */ 61514cfcd25SRakesh Sunki 6167d37f411SRakesh Sunki /* Length of nan_pmk in octets */ 6177d37f411SRakesh Sunki u8 nan_pmk_len; 6187d37f411SRakesh Sunki 6197d37f411SRakesh Sunki /* 6207d37f411SRakesh Sunki * PMK: Info is optional in Discovery phase. PMK info can 6217d37f411SRakesh Sunki * be passed during the NDP session. 6227d37f411SRakesh Sunki */ 6237d37f411SRakesh Sunki u8 nan_pmk[32]; 62433ea287aSAdil Saeed Musthafa 62533ea287aSAdil Saeed Musthafa enum value_not_set_enabled_disabled wnm_bss_max_feature; 62633ea287aSAdil Saeed Musthafa int wnm_bss_max_idle_time; 62733ea287aSAdil Saeed Musthafa enum value_not_set_enabled_disabled wnm_bss_max_protection; 6280040258bSAshwini Patil 6290040258bSAshwini Patil char *non_pref_ch_list; /* MBO: non-preferred channel report */ 630*5acd738cSAshwini Patil char *btm_query_cand_list; /* Candidate list for BTM Query */ 631cd4e3c3eSJouni Malinen }; 632cd4e3c3eSJouni Malinen 633cd4e3c3eSJouni Malinen 634cd4e3c3eSJouni Malinen enum sigma_dut_print_level { 635cd4e3c3eSJouni Malinen DUT_MSG_DEBUG, DUT_MSG_INFO, DUT_MSG_ERROR 636cd4e3c3eSJouni Malinen }; 637cd4e3c3eSJouni Malinen 638cd4e3c3eSJouni Malinen void sigma_dut_print(struct sigma_dut *dut, int level, const char *fmt, ...) 639cd4e3c3eSJouni Malinen PRINTF_FORMAT(3, 4); 640cd4e3c3eSJouni Malinen 641cd4e3c3eSJouni Malinen void sigma_dut_summary(struct sigma_dut *dut, const char *fmt, ...) 642cd4e3c3eSJouni Malinen PRINTF_FORMAT(2, 3); 643cd4e3c3eSJouni Malinen 644cd4e3c3eSJouni Malinen 645cd4e3c3eSJouni Malinen enum sigma_status { 646cd4e3c3eSJouni Malinen SIGMA_RUNNING, SIGMA_INVALID, SIGMA_ERROR, SIGMA_COMPLETE 647cd4e3c3eSJouni Malinen }; 648cd4e3c3eSJouni Malinen 649cd4e3c3eSJouni Malinen void send_resp(struct sigma_dut *dut, struct sigma_conn *conn, 65076401f50SJouni Malinen enum sigma_status status, const char *buf); 651cd4e3c3eSJouni Malinen 652cd4e3c3eSJouni Malinen const char * get_param(struct sigma_cmd *cmd, const char *name); 653cd4e3c3eSJouni Malinen 654cd4e3c3eSJouni Malinen int sigma_dut_reg_cmd(const char *cmd, 655cd4e3c3eSJouni Malinen int (*validate)(struct sigma_cmd *cmd), 656cd4e3c3eSJouni Malinen int (*process)(struct sigma_dut *dut, 657cd4e3c3eSJouni Malinen struct sigma_conn *conn, 658cd4e3c3eSJouni Malinen struct sigma_cmd *cmd)); 659cd4e3c3eSJouni Malinen 660cd4e3c3eSJouni Malinen void sigma_dut_register_cmds(void); 661cd4e3c3eSJouni Malinen 662cd4e3c3eSJouni Malinen int cmd_sta_send_frame(struct sigma_dut *dut, struct sigma_conn *conn, 663cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 664cd4e3c3eSJouni Malinen int cmd_sta_set_parameter(struct sigma_dut *dut, struct sigma_conn *conn, 665cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 666cd4e3c3eSJouni Malinen int cmd_ap_send_frame(struct sigma_dut *dut, struct sigma_conn *conn, 667cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 668cd4e3c3eSJouni Malinen int cmd_wlantest_send_frame(struct sigma_dut *dut, struct sigma_conn *conn, 669cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 670cd4e3c3eSJouni Malinen 671cd4e3c3eSJouni Malinen enum driver_type { 672cd4e3c3eSJouni Malinen DRIVER_NOT_SET, 673cd4e3c3eSJouni Malinen DRIVER_ATHEROS, 674cd4e3c3eSJouni Malinen DRIVER_WCN, 675cd4e3c3eSJouni Malinen DRIVER_MAC80211, 676cd4e3c3eSJouni Malinen DRIVER_AR6003, 677cd4e3c3eSJouni Malinen DRIVER_WIL6210, 678cd4e3c3eSJouni Malinen DRIVER_QNXNTO, 679b692f107SSreelakshmi Konamki DRIVER_OPENWRT, 680b692f107SSreelakshmi Konamki DRIVER_LINUX_WCN, 681cd4e3c3eSJouni Malinen }; 682cd4e3c3eSJouni Malinen 683cd4e3c3eSJouni Malinen enum openwrt_driver_type { 684cd4e3c3eSJouni Malinen OPENWRT_DRIVER_NOT_SET, 685cd4e3c3eSJouni Malinen OPENWRT_DRIVER_ATHEROS 686cd4e3c3eSJouni Malinen }; 687cd4e3c3eSJouni Malinen 688cd4e3c3eSJouni Malinen #define DRIVER_NAME_60G "wil6210" 689cd4e3c3eSJouni Malinen 690cd4e3c3eSJouni Malinen int set_wifi_chip(const char *chip_type); 691cd4e3c3eSJouni Malinen enum driver_type get_driver_type(void); 692cd4e3c3eSJouni Malinen enum openwrt_driver_type get_openwrt_driver_type(void); 693cd4e3c3eSJouni Malinen int file_exists(const char *fname); 694cd4e3c3eSJouni Malinen 695cd4e3c3eSJouni Malinen struct wpa_ctrl; 696cd4e3c3eSJouni Malinen 697cd4e3c3eSJouni Malinen int wps_connection_event(struct sigma_dut *dut, struct sigma_conn *conn, 698cd4e3c3eSJouni Malinen struct wpa_ctrl *ctrl, const char *intf, int p2p_resp); 699cd4e3c3eSJouni Malinen int ascii2hexstr(const char *str, char *hex); 700cd4e3c3eSJouni Malinen void disconnect_station(struct sigma_dut *dut); 701cd4e3c3eSJouni Malinen void nfc_status(struct sigma_dut *dut, const char *state, const char *oper); 702cd4e3c3eSJouni Malinen int get_ip_config(struct sigma_dut *dut, const char *ifname, char *buf, 703cd4e3c3eSJouni Malinen size_t buf_len); 704cd4e3c3eSJouni Malinen int ath6kl_client_uapsd(struct sigma_dut *dut, const char *intf, int uapsd); 705cd4e3c3eSJouni Malinen int is_ip_addr(const char *str); 706cd4e3c3eSJouni Malinen int run_system(struct sigma_dut *dut, const char *cmd); 7075f793f0dSAdil Saeed Musthafa int run_system_wrapper(struct sigma_dut *dut, const char *cmd, ...); 708cd4e3c3eSJouni Malinen int cmd_wlantest_set_channel(struct sigma_dut *dut, struct sigma_conn *conn, 709cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 710cd4e3c3eSJouni Malinen void sniffer_close(struct sigma_dut *dut); 711cd4e3c3eSJouni Malinen 712cd4e3c3eSJouni Malinen /* ap.c */ 713cd4e3c3eSJouni Malinen void ath_disable_txbf(struct sigma_dut *dut, const char *intf); 714818afef5SPriyadharshini Gowthaman void ath_config_dyn_bw_sig(struct sigma_dut *dut, const char *ifname, 715818afef5SPriyadharshini Gowthaman const char *val); 716e5e2517eSpriyadharshini gowthaman void novap_reset(struct sigma_dut *dut, const char *ifname); 717cd4e3c3eSJouni Malinen 718cd4e3c3eSJouni Malinen /* sta.c */ 719cd4e3c3eSJouni Malinen int set_ps(const char *intf, struct sigma_dut *dut, int enabled); 720cd4e3c3eSJouni Malinen void ath_set_zero_crc(struct sigma_dut *dut, const char *val); 721cd4e3c3eSJouni Malinen void ath_set_cts_width(struct sigma_dut *dut, const char *ifname, 722cd4e3c3eSJouni Malinen const char *val); 723cd4e3c3eSJouni Malinen int ath_set_width(struct sigma_dut *dut, struct sigma_conn *conn, 724cd4e3c3eSJouni Malinen const char *intf, const char *val); 7250fe101e9SLior David int wil6210_send_frame_60g(struct sigma_dut *dut, struct sigma_conn *conn, 7260fe101e9SLior David struct sigma_cmd *cmd); 727cd4e3c3eSJouni Malinen 728cd4e3c3eSJouni Malinen /* p2p.c */ 729cd4e3c3eSJouni Malinen int p2p_cmd_sta_get_parameter(struct sigma_dut *dut, struct sigma_conn *conn, 730cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 731091e253dSPurushottam Kushwaha void p2p_create_event_thread(struct sigma_dut *dut); 732091e253dSPurushottam Kushwaha void stop_event_thread(void); 73389b37cdcSAmarnath Hullur Subramanyam void start_dhcp(struct sigma_dut *dut, const char *group_ifname, int go); 73489b37cdcSAmarnath Hullur Subramanyam void stop_dhcp(struct sigma_dut *dut, const char *group_ifname, int go); 73589b37cdcSAmarnath Hullur Subramanyam int p2p_discover_peer(struct sigma_dut *dut, const char *ifname, 73689b37cdcSAmarnath Hullur Subramanyam const char *peer, int full); 737cd4e3c3eSJouni Malinen 73872462ef3Spriyadharshini gowthaman /* utils.c */ 739cd4e3c3eSJouni Malinen enum sigma_program sigma_program_to_enum(const char *prog); 74072462ef3Spriyadharshini gowthaman int parse_mac_address(struct sigma_dut *dut, const char *arg, 74172462ef3Spriyadharshini gowthaman unsigned char *addr); 7427192dc42SRakesh Sunki unsigned int channel_to_freq(unsigned int channel); 7437192dc42SRakesh Sunki unsigned int freq_to_channel(unsigned int freq); 744cd4e3c3eSJouni Malinen 745cd4e3c3eSJouni Malinen /* uapsd_stream.c */ 746cd4e3c3eSJouni Malinen void receive_uapsd(struct sigma_stream *s); 74779594049SPradeep Reddy POTTETI void send_uapsd_console(struct sigma_stream *s); 748cd4e3c3eSJouni Malinen 749cd4e3c3eSJouni Malinen /* nan.c */ 750cd4e3c3eSJouni Malinen int nan_preset_testparameters(struct sigma_dut *dut, struct sigma_conn *conn, 751cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 752cd4e3c3eSJouni Malinen int nan_cmd_sta_get_parameter(struct sigma_dut *dut, struct sigma_conn *conn, 753cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 754cd4e3c3eSJouni Malinen int nan_cmd_sta_exec_action(struct sigma_dut *dut, struct sigma_conn *conn, 755cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 756cd4e3c3eSJouni Malinen int nan_cmd_sta_get_events(struct sigma_dut *dut, struct sigma_conn *conn, 757cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 758cd4e3c3eSJouni Malinen int nan_cmd_sta_transmit_followup(struct sigma_dut *dut, 759cd4e3c3eSJouni Malinen struct sigma_conn *conn, 760cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 761cd4e3c3eSJouni Malinen void nan_cmd_sta_reset_default(struct sigma_dut *dut, struct sigma_conn *conn, 762cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 763cd4e3c3eSJouni Malinen int nan_cmd_sta_preset_testparameters(struct sigma_dut *dut, 764cd4e3c3eSJouni Malinen struct sigma_conn *conn, 765cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 766cd4e3c3eSJouni Malinen 767d66913acSpriyadharshini gowthaman /* ftm.c */ 768d66913acSpriyadharshini gowthaman int loc_cmd_sta_exec_action(struct sigma_dut *dut, struct sigma_conn *conn, 769d66913acSpriyadharshini gowthaman struct sigma_cmd *cmd); 770d66913acSpriyadharshini gowthaman int loc_cmd_sta_send_frame(struct sigma_dut *dut, struct sigma_conn *conn, 771d66913acSpriyadharshini gowthaman struct sigma_cmd *cmd); 772d66913acSpriyadharshini gowthaman int loc_cmd_sta_preset_testparameters(struct sigma_dut *dut, 773d66913acSpriyadharshini gowthaman struct sigma_conn *conn, 774d66913acSpriyadharshini gowthaman struct sigma_cmd *cmd); 775d66913acSpriyadharshini gowthaman 776cd4e3c3eSJouni Malinen #endif /* SIGMA_DUT_H */ 777