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. 50fee701cSJouni Malinen * Copyright (c) 2018-2019, The Linux Foundation 6cd4e3c3eSJouni Malinen * All Rights Reserved. 7cd4e3c3eSJouni Malinen * Licensed under the Clear BSD license. See README for more details. 8cd4e3c3eSJouni Malinen */ 9cd4e3c3eSJouni Malinen 10cd4e3c3eSJouni Malinen #ifndef SIGMA_DUT_H 11cd4e3c3eSJouni Malinen #define SIGMA_DUT_H 12cd4e3c3eSJouni Malinen 139981b511SLior David #ifdef __GNUC__ 149981b511SLior David #define _GNU_SOURCE 1 159981b511SLior David #endif 169981b511SLior David 17cd4e3c3eSJouni Malinen #include <stdlib.h> 18cd4e3c3eSJouni Malinen #include <stdio.h> 19cd4e3c3eSJouni Malinen #include <stdarg.h> 20cd4e3c3eSJouni Malinen #include <string.h> 21cd4e3c3eSJouni Malinen #include <errno.h> 22cd4e3c3eSJouni Malinen #include <unistd.h> 23cd4e3c3eSJouni Malinen #include <time.h> 24cd4e3c3eSJouni Malinen #include <sys/time.h> 25cd4e3c3eSJouni Malinen #include <sys/types.h> 26cd4e3c3eSJouni Malinen #include <sys/socket.h> 27cd4e3c3eSJouni Malinen #include <net/if.h> 28cd4e3c3eSJouni Malinen #ifdef __QNXNTO__ 29cd4e3c3eSJouni Malinen #include <sys/select.h> 30cd4e3c3eSJouni Malinen #include <net/if_ether.h> 31cd4e3c3eSJouni Malinen #endif /* __QNXNTO__ */ 32cd4e3c3eSJouni Malinen #include <netinet/in.h> 33cd4e3c3eSJouni Malinen #include <arpa/inet.h> 34cd4e3c3eSJouni Malinen #ifdef CONFIG_TRAFFIC_AGENT 35cd4e3c3eSJouni Malinen #include <pthread.h> 36cd4e3c3eSJouni Malinen #endif /* CONFIG_TRAFFIC_AGENT */ 37291d97daSPeng Xu #ifdef NL80211_SUPPORT 38291d97daSPeng Xu #include <netlink/genl/family.h> 39291d97daSPeng Xu #include <netlink/genl/ctrl.h> 40291d97daSPeng Xu #include <netlink/genl/genl.h> 41291d97daSPeng Xu #include "qca-vendor_copy.h" 42291d97daSPeng Xu #include "nl80211_copy.h" 43291d97daSPeng Xu #endif /* NL80211_SUPPORT */ 442dfb1daeSVinay Gannevaram #ifdef ANDROID_WIFI_HAL 45*437476eeSSunil Dutt /* avoid duplicate definitions from wifi_hal.h causing issues */ 46*437476eeSSunil Dutt #define u32 wifi_hal_u32 47*437476eeSSunil Dutt #define u16 wifi_hal_u16 48*437476eeSSunil Dutt #define u8 wifi_hal_u8 492dfb1daeSVinay Gannevaram #include "wifi_hal.h" 50*437476eeSSunil Dutt #undef u32 51*437476eeSSunil Dutt #undef u16 52*437476eeSSunil Dutt #undef u8 532dfb1daeSVinay Gannevaram #endif /*ANDROID_WIFI_HAL*/ 54cd4e3c3eSJouni Malinen 55764553e3SVeerendranath Jakkam #ifdef NL80211_SUPPORT 56764553e3SVeerendranath Jakkam #ifndef NL_CAPABILITY_VERSION_3_5_0 57764553e3SVeerendranath Jakkam #define nla_nest_start(msg, attrtype) \ 58764553e3SVeerendranath Jakkam nla_nest_start(msg, NLA_F_NESTED | (attrtype)) 59764553e3SVeerendranath Jakkam #endif 60764553e3SVeerendranath Jakkam #endif 61cd4e3c3eSJouni Malinen 62cd4e3c3eSJouni Malinen #ifdef __GNUC__ 63cd4e3c3eSJouni Malinen #define PRINTF_FORMAT(a,b) __attribute__ ((format (printf, (a), (b)))) 64cd4e3c3eSJouni Malinen #else 65cd4e3c3eSJouni Malinen #define PRINTF_FORMAT(a,b) 66cd4e3c3eSJouni Malinen #endif 67cd4e3c3eSJouni Malinen 68da5f35bcSJouni Malinen #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) 69da5f35bcSJouni Malinen 70cd4e3c3eSJouni Malinen #ifndef SIGMA_TMPDIR 71cd4e3c3eSJouni Malinen #define SIGMA_TMPDIR "/tmp" 72cd4e3c3eSJouni Malinen #endif /* SIGMA_TMPDIR */ 73cd4e3c3eSJouni Malinen 74cd4e3c3eSJouni Malinen #ifndef SIGMA_DUT_VER 75cd4e3c3eSJouni Malinen #define SIGMA_DUT_VER "(unknown)" 76cd4e3c3eSJouni Malinen #endif /* SIGMA_DUT_VER */ 77cd4e3c3eSJouni Malinen 78cd4e3c3eSJouni Malinen #ifndef ETH_ALEN 79cd4e3c3eSJouni Malinen #define ETH_ALEN 6 80cd4e3c3eSJouni Malinen #endif 81cd4e3c3eSJouni Malinen 82d0ad6ef7SVeerendranath Jakkam #ifndef BIT_ULL 83d0ad6ef7SVeerendranath Jakkam #define BIT_ULL(nr) (1ULL << (nr)) 84d0ad6ef7SVeerendranath Jakkam #endif 85d0ad6ef7SVeerendranath Jakkam 86cd4e3c3eSJouni Malinen #ifndef ETH_P_ARP 87cd4e3c3eSJouni Malinen #define ETH_P_ARP 0x0806 88cd4e3c3eSJouni Malinen #endif 89cd4e3c3eSJouni Malinen 90a90032d3SAlexei Avshalom Lazar #ifndef ARRAY_SIZE 91a90032d3SAlexei Avshalom Lazar #define ARRAY_SIZE(x) (sizeof((x)) / (sizeof(((x)[0])))) 92a90032d3SAlexei Avshalom Lazar #endif 93a90032d3SAlexei Avshalom Lazar 9447d709baSPeng Xu #define IPV6_ADDR_LEN 16 9547d709baSPeng Xu 96cd4e3c3eSJouni Malinen struct sigma_dut; 97cd4e3c3eSJouni Malinen 98cd4e3c3eSJouni Malinen #define MAX_PARAMS 100 99363f5584SAlejandro Vasquez #define MAX_RADIO 3 100cd4e3c3eSJouni Malinen 101c2ae961eSAjit Vaishya #define NAN_AWARE_IFACE "wifi-aware0" 102c2ae961eSAjit Vaishya 103cd4e3c3eSJouni Malinen /* Set default operating channel width 80 MHz */ 104cd4e3c3eSJouni Malinen #define VHT_DEFAULT_OPER_CHWIDTH AP_80_VHT_OPER_CHWIDTH 105cd4e3c3eSJouni Malinen 106cd4e3c3eSJouni Malinen typedef unsigned int u32; 1071bde7947SAnkita Bajaj typedef uint16_t u16; 108cd4e3c3eSJouni Malinen typedef unsigned char u8; 109cd4e3c3eSJouni Malinen 110a90032d3SAlexei Avshalom Lazar struct ieee80211_hdr_3addr { 111a90032d3SAlexei Avshalom Lazar uint16_t frame_control; 112a90032d3SAlexei Avshalom Lazar uint16_t duration_id; 113a90032d3SAlexei Avshalom Lazar uint8_t addr1[ETH_ALEN]; 114a90032d3SAlexei Avshalom Lazar uint8_t addr2[ETH_ALEN]; 115a90032d3SAlexei Avshalom Lazar uint8_t addr3[ETH_ALEN]; 116a90032d3SAlexei Avshalom Lazar uint16_t seq_ctrl; 117a90032d3SAlexei Avshalom Lazar } __attribute__((packed)); 118a90032d3SAlexei Avshalom Lazar 119a90032d3SAlexei Avshalom Lazar struct wfa_p2p_attribute { 120a90032d3SAlexei Avshalom Lazar uint8_t id; 121a90032d3SAlexei Avshalom Lazar uint16_t len; 122a90032d3SAlexei Avshalom Lazar uint8_t variable[0]; 123a90032d3SAlexei Avshalom Lazar } __attribute__((packed)); 124a90032d3SAlexei Avshalom Lazar 1252e2097d0SLavanya Suresh struct dut_hw_modes { 1262e2097d0SLavanya Suresh u16 ht_capab; 1272e2097d0SLavanya Suresh u8 mcs_set[16]; 1282e2097d0SLavanya Suresh u8 ampdu_params; 1292e2097d0SLavanya Suresh u32 vht_capab; 1302e2097d0SLavanya Suresh u8 vht_mcs_set[8]; 1312e2097d0SLavanya Suresh }; 1322e2097d0SLavanya Suresh 133cd4e3c3eSJouni Malinen #define WPA_GET_BE32(a) ((((u32) (a)[0]) << 24) | (((u32) (a)[1]) << 16) | \ 134cd4e3c3eSJouni Malinen (((u32) (a)[2]) << 8) | ((u32) (a)[3])) 135cd4e3c3eSJouni Malinen #define WPA_PUT_BE32(a, val) \ 136cd4e3c3eSJouni Malinen do { \ 137cd4e3c3eSJouni Malinen (a)[0] = (u8) ((((u32) (val)) >> 24) & 0xff); \ 138cd4e3c3eSJouni Malinen (a)[1] = (u8) ((((u32) (val)) >> 16) & 0xff); \ 139cd4e3c3eSJouni Malinen (a)[2] = (u8) ((((u32) (val)) >> 8) & 0xff); \ 140cd4e3c3eSJouni Malinen (a)[3] = (u8) (((u32) (val)) & 0xff); \ 141cd4e3c3eSJouni Malinen } while (0) 142cd4e3c3eSJouni Malinen 143cd4e3c3eSJouni Malinen struct sigma_cmd { 144cd4e3c3eSJouni Malinen char *params[MAX_PARAMS]; 145cd4e3c3eSJouni Malinen char *values[MAX_PARAMS]; 146cd4e3c3eSJouni Malinen int count; 147cd4e3c3eSJouni Malinen }; 148cd4e3c3eSJouni Malinen 1493410aa5bSAlejandro Vasquez #define MAX_CMD_LEN 4096 150cd4e3c3eSJouni Malinen 151cd4e3c3eSJouni Malinen struct sigma_conn { 152cd4e3c3eSJouni Malinen int s; 153cd4e3c3eSJouni Malinen struct sockaddr_in addr; 154cd4e3c3eSJouni Malinen socklen_t addrlen; 155cd4e3c3eSJouni Malinen char buf[MAX_CMD_LEN + 5]; 156cd4e3c3eSJouni Malinen int pos; 157cd4e3c3eSJouni Malinen int waiting_completion; 158cd4e3c3eSJouni Malinen }; 159cd4e3c3eSJouni Malinen 1600e29cf2dSJouni Malinen enum sigma_cmd_result { 16153264f63SJouni Malinen STATUS_SENT_ERROR = -3, 1620e29cf2dSJouni Malinen ERROR_SEND_STATUS = -2, 1630e29cf2dSJouni Malinen INVALID_SEND_STATUS = -1, 1640e29cf2dSJouni Malinen STATUS_SENT = 0, 1650e29cf2dSJouni Malinen SUCCESS_SEND_STATUS = 1 1660e29cf2dSJouni Malinen }; 167cd4e3c3eSJouni Malinen 168cd4e3c3eSJouni Malinen struct sigma_cmd_handler { 169cd4e3c3eSJouni Malinen struct sigma_cmd_handler *next; 170cd4e3c3eSJouni Malinen char *cmd; 171cd4e3c3eSJouni Malinen int (*validate)(struct sigma_cmd *cmd); 172cd4e3c3eSJouni Malinen /* process return value: 173cd4e3c3eSJouni Malinen * -2 = failed, caller will send status,ERROR 174cd4e3c3eSJouni Malinen * -1 = failed, caller will send status,INVALID 1750e29cf2dSJouni Malinen * 0 = response already sent 176cd4e3c3eSJouni Malinen * 1 = success, caller will send status,COMPLETE 177cd4e3c3eSJouni Malinen */ 17826a5b76dSJouni Malinen enum sigma_cmd_result (*process)(struct sigma_dut *dut, 17926a5b76dSJouni Malinen struct sigma_conn *conn, 180cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 181cd4e3c3eSJouni Malinen }; 182cd4e3c3eSJouni Malinen 183cd4e3c3eSJouni Malinen #define P2P_GRP_ID_LEN 128 184cd4e3c3eSJouni Malinen #define IP_ADDR_STR_LEN 16 185cd4e3c3eSJouni Malinen 186cd4e3c3eSJouni Malinen struct wfa_cs_p2p_group { 187cd4e3c3eSJouni Malinen struct wfa_cs_p2p_group *next; 188cd4e3c3eSJouni Malinen char ifname[IFNAMSIZ]; 189cd4e3c3eSJouni Malinen int go; 190cd4e3c3eSJouni Malinen char grpid[P2P_GRP_ID_LEN]; 191cd4e3c3eSJouni Malinen char ssid[33]; 192cd4e3c3eSJouni Malinen }; 193cd4e3c3eSJouni Malinen 194cd4e3c3eSJouni Malinen #ifdef CONFIG_TRAFFIC_AGENT 195cd4e3c3eSJouni Malinen 196cd4e3c3eSJouni Malinen #define MAX_SIGMA_STREAMS 16 197cd4e3c3eSJouni Malinen #define MAX_SIGMA_STATS 6000 198cd4e3c3eSJouni Malinen 199cd4e3c3eSJouni Malinen struct sigma_frame_stats { 200cd4e3c3eSJouni Malinen unsigned int seqnum; 201cd4e3c3eSJouni Malinen unsigned int local_sec; 202cd4e3c3eSJouni Malinen unsigned int local_usec; 203cd4e3c3eSJouni Malinen unsigned int remote_sec; 204cd4e3c3eSJouni Malinen unsigned int remote_usec; 205cd4e3c3eSJouni Malinen }; 206cd4e3c3eSJouni Malinen 207cd4e3c3eSJouni Malinen struct sigma_stream { 208cd4e3c3eSJouni Malinen enum sigma_stream_profile { 209cd4e3c3eSJouni Malinen SIGMA_PROFILE_FILE_TRANSFER, 210cd4e3c3eSJouni Malinen SIGMA_PROFILE_MULTICAST, 211cd4e3c3eSJouni Malinen SIGMA_PROFILE_IPTV, 212cd4e3c3eSJouni Malinen SIGMA_PROFILE_TRANSACTION, 213cd4e3c3eSJouni Malinen SIGMA_PROFILE_START_SYNC, 214cd4e3c3eSJouni Malinen SIGMA_PROFILE_UAPSD 215cd4e3c3eSJouni Malinen } profile; 216cd4e3c3eSJouni Malinen int sender; 217cd4e3c3eSJouni Malinen struct in_addr dst; 218cd4e3c3eSJouni Malinen int dst_port; 219cd4e3c3eSJouni Malinen struct in_addr src; 220cd4e3c3eSJouni Malinen int src_port; 221cd4e3c3eSJouni Malinen int frame_rate; 222cd4e3c3eSJouni Malinen int duration; 223c2493f83SJouni Malinen unsigned int payload_size; 224cd4e3c3eSJouni Malinen int start_delay; 225cd4e3c3eSJouni Malinen int max_cnt; 226cd4e3c3eSJouni Malinen enum sigma_traffic_class { 227cd4e3c3eSJouni Malinen SIGMA_TC_VOICE, 228cd4e3c3eSJouni Malinen SIGMA_TC_VIDEO, 229cd4e3c3eSJouni Malinen SIGMA_TC_BACKGROUND, 230cd4e3c3eSJouni Malinen SIGMA_TC_BEST_EFFORT 231cd4e3c3eSJouni Malinen } tc; 232cd4e3c3eSJouni Malinen int user_priority; 233cd4e3c3eSJouni Malinen int user_priority_set; 234cd4e3c3eSJouni Malinen int started; 235cd4e3c3eSJouni Malinen int no_timestamps; 236cd4e3c3eSJouni Malinen 237cd4e3c3eSJouni Malinen int sock; 238cd4e3c3eSJouni Malinen pthread_t thr; 239cd4e3c3eSJouni Malinen int stop; 240cd4e3c3eSJouni Malinen int ta_send_in_progress; 241cd4e3c3eSJouni Malinen int trans_proto; 242cd4e3c3eSJouni Malinen 243cd4e3c3eSJouni Malinen /* Statistics */ 244cd4e3c3eSJouni Malinen int tx_act_frames; /* 245cd4e3c3eSJouni Malinen * Number of frames generated by the traffic 246cd4e3c3eSJouni Malinen * generator application. The name is defined in the 247cd4e3c3eSJouni Malinen * Sigma CAPI spec. 248cd4e3c3eSJouni Malinen */ 249cd4e3c3eSJouni Malinen int tx_frames; 250cd4e3c3eSJouni Malinen int rx_frames; 251cd4e3c3eSJouni Malinen unsigned long long tx_payload_bytes; 252cd4e3c3eSJouni Malinen unsigned long long rx_payload_bytes; 253cd4e3c3eSJouni Malinen int out_of_seq_frames; 254cd4e3c3eSJouni Malinen struct sigma_frame_stats *stats; 255cd4e3c3eSJouni Malinen unsigned int num_stats; 256cd4e3c3eSJouni Malinen unsigned int stream_id; 257cd4e3c3eSJouni Malinen 258cd4e3c3eSJouni Malinen /* U-APSD */ 259cd4e3c3eSJouni Malinen unsigned int sta_id; 260cd4e3c3eSJouni Malinen unsigned int rx_cookie; 261cd4e3c3eSJouni Malinen unsigned int uapsd_sta_tc; 262cd4e3c3eSJouni Malinen unsigned int uapsd_rx_state; 263cd4e3c3eSJouni Malinen unsigned int uapsd_tx_state; 264cd4e3c3eSJouni Malinen unsigned int tx_stop_cnt; 265cd4e3c3eSJouni Malinen unsigned int tx_hello_cnt; 266cd4e3c3eSJouni Malinen pthread_t uapsd_send_thr; 267cd4e3c3eSJouni Malinen pthread_cond_t tx_thr_cond; 268cd4e3c3eSJouni Malinen pthread_mutex_t tx_thr_mutex; 269cd4e3c3eSJouni Malinen int reset_rx; 270cd4e3c3eSJouni Malinen int num_retry; 271cd4e3c3eSJouni Malinen char ifname[IFNAMSIZ]; /* ifname from the command */ 272cd4e3c3eSJouni Malinen struct sigma_dut *dut; /* for traffic agent thread to access context */ 27379594049SPradeep Reddy POTTETI /* console */ 27479594049SPradeep Reddy POTTETI char test_name[9]; /* test case name */ 27579594049SPradeep Reddy POTTETI int can_quit; 27679594049SPradeep Reddy POTTETI int reset; 277cd4e3c3eSJouni Malinen }; 278cd4e3c3eSJouni Malinen 279cd4e3c3eSJouni Malinen #endif /* CONFIG_TRAFFIC_AGENT */ 280cd4e3c3eSJouni Malinen 281bc180dc5SAlexei Avshalom Lazar /* extended scheduling test */ 282bc180dc5SAlexei Avshalom Lazar enum sigma_ese_type { 283bc180dc5SAlexei Avshalom Lazar ESE_CBAP, 284bc180dc5SAlexei Avshalom Lazar ESE_SP, 285bc180dc5SAlexei Avshalom Lazar }; 286bc180dc5SAlexei Avshalom Lazar 287bc180dc5SAlexei Avshalom Lazar struct sigma_ese_alloc { 288bc180dc5SAlexei Avshalom Lazar unsigned int percent_bi; 289bc180dc5SAlexei Avshalom Lazar enum sigma_ese_type type; 290bc180dc5SAlexei Avshalom Lazar unsigned int src_aid, dst_aid; 291bc180dc5SAlexei Avshalom Lazar }; 292bc180dc5SAlexei Avshalom Lazar 293bc180dc5SAlexei Avshalom Lazar #define ESE_BCAST_AID 255 294bc180dc5SAlexei Avshalom Lazar #define MAX_ESE_ALLOCS 4 295cd4e3c3eSJouni Malinen 296cd4e3c3eSJouni Malinen #define NUM_AP_AC 4 297cd4e3c3eSJouni Malinen #define AP_AC_BE 0 298cd4e3c3eSJouni Malinen #define AP_AC_BK 1 299cd4e3c3eSJouni Malinen #define AP_AC_VI 2 300cd4e3c3eSJouni Malinen #define AP_AC_VO 3 301cd4e3c3eSJouni Malinen 302b7b297f2SAdil Saeed Musthafa #define MAX_WLAN_TAGS 3 30369063725SAdil Saeed Musthafa #define MBO_MAX_PREF_BSSIDS 10 3044ec61bd9SAdil Saeed Musthafa #define MAX_FT_BSS_LIST 10 305b7b297f2SAdil Saeed Musthafa 3068863ec7cSPeng Xu #define TRANSPORT_PROTO_TYPE_TCP 0x06 3078863ec7cSPeng Xu #define TRANSPORT_PROTO_TYPE_UDP 0x11 3088863ec7cSPeng Xu #define NAN_TRANSPORT_PORT_DEFAULT 7000 3098863ec7cSPeng Xu #define NAN_TRANSPORT_PROTOCOL_DEFAULT TRANSPORT_PROTO_TYPE_TCP 3108863ec7cSPeng Xu 31157fa3d83SJouni Malinen enum value_not_set_enabled_disabled { 31257fa3d83SJouni Malinen VALUE_NOT_SET, 31357fa3d83SJouni Malinen VALUE_ENABLED, 31457fa3d83SJouni Malinen VALUE_DISABLED 31557fa3d83SJouni Malinen }; 31657fa3d83SJouni Malinen 3174b0cdee4SPradeep Reddy Potteti enum sec_ch_offset { 3184b0cdee4SPradeep Reddy Potteti SEC_CH_NO, 3194b0cdee4SPradeep Reddy Potteti SEC_CH_40ABOVE, 3204b0cdee4SPradeep Reddy Potteti SEC_CH_40BELOW 3214b0cdee4SPradeep Reddy Potteti }; 3224b0cdee4SPradeep Reddy Potteti 32369063725SAdil Saeed Musthafa struct mbo_pref_ap { 32469063725SAdil Saeed Musthafa int ap_ne_class; 32569063725SAdil Saeed Musthafa int ap_ne_op_ch; 32669063725SAdil Saeed Musthafa int ap_ne_pref; 32769063725SAdil Saeed Musthafa unsigned char mac_addr[ETH_ALEN]; 32869063725SAdil Saeed Musthafa }; 32969063725SAdil Saeed Musthafa 330291d97daSPeng Xu #ifdef NL80211_SUPPORT 331291d97daSPeng Xu #define SOCK_BUF_SIZE (32 * 1024) 332291d97daSPeng Xu struct nl80211_ctx { 333291d97daSPeng Xu struct nl_sock *sock; 334291d97daSPeng Xu int netlink_familyid; 335291d97daSPeng Xu int nlctrl_familyid; 336291d97daSPeng Xu size_t sock_buf_size; 337291d97daSPeng Xu }; 338291d97daSPeng Xu #endif /* NL80211_SUPPORT */ 339291d97daSPeng Xu 34033f700cfSAlexei Avshalom Lazar /* hardcoded long WSC IE values to force fragmentation */ 34133f700cfSAlexei Avshalom Lazar #define WPS_LONG_DEVICE_NAME "Qti1234511adtest1234567890123456" 34233f700cfSAlexei Avshalom Lazar #define WPS_LONG_MANUFACTURER "Qti1234511adQti1234511adQti1234511adQti1234511adQti1234511ad" 34333f700cfSAlexei Avshalom Lazar #define WPS_LONG_MODEL_NAME "Qti1234511adtest1234567890123456" 34433f700cfSAlexei Avshalom Lazar #define WPS_LONG_MODEL_NUMBER "11111111111111111111111111111111" 34533f700cfSAlexei Avshalom Lazar #define WPS_LONG_SERIAL_NUMBER "22222222222222222222222222222222" 34633f700cfSAlexei Avshalom Lazar 347e4fde73dSJouni Malinen enum akm_suite_values { 348e4fde73dSJouni Malinen AKM_WPA_EAP = 1, 349e4fde73dSJouni Malinen AKM_WPA_PSK = 2, 350e4fde73dSJouni Malinen AKM_FT_EAP = 3, 351e4fde73dSJouni Malinen AKM_FT_PSK = 4, 352e4fde73dSJouni Malinen AKM_EAP_SHA256 = 5, 353e4fde73dSJouni Malinen AKM_PSK_SHA256 = 6, 354e4fde73dSJouni Malinen AKM_SAE = 8, 355e4fde73dSJouni Malinen AKM_FT_SAE = 9, 356e4fde73dSJouni Malinen AKM_SUITE_B = 12, 357e4fde73dSJouni Malinen AKM_FT_SUITE_B = 13, 358e4fde73dSJouni Malinen AKM_FILS_SHA256 = 14, 359e4fde73dSJouni Malinen AKM_FILS_SHA384 = 15, 360e4fde73dSJouni Malinen AKM_FT_FILS_SHA256 = 16, 361e4fde73dSJouni Malinen AKM_FT_FILS_SHA384 = 17, 362e4fde73dSJouni Malinen 363e4fde73dSJouni Malinen }; 364e4fde73dSJouni Malinen 365cd4e3c3eSJouni Malinen struct sigma_dut { 366d2095485SJouni Malinen const char *main_ifname; 367b21f0542SJouni Malinen char *main_ifname_2g; 368b21f0542SJouni Malinen char *main_ifname_5g; 369d2095485SJouni Malinen const char *station_ifname; 370b21f0542SJouni Malinen char *station_ifname_2g; 371b21f0542SJouni Malinen char *station_ifname_5g; 3721f76fa6dSJouni Malinen char *p2p_ifname_buf; 373b21f0542SJouni Malinen int use_5g; 37478217db5SJouni Malinen int sta_2g_started; 37578217db5SJouni Malinen int sta_5g_started; 376d2095485SJouni Malinen 377cd4e3c3eSJouni Malinen int s; /* server TCP socket */ 378cd4e3c3eSJouni Malinen int debug_level; 379cd4e3c3eSJouni Malinen int stdout_debug; 380cd4e3c3eSJouni Malinen struct sigma_cmd_handler *cmds; 3810fee701cSJouni Malinen int response_sent; 382cd4e3c3eSJouni Malinen 383c9bc15d1SAlexei Avshalom Lazar const char *sigma_tmpdir; 384c9bc15d1SAlexei Avshalom Lazar 385cd4e3c3eSJouni Malinen /* Default timeout value (seconds) for commands */ 386cd4e3c3eSJouni Malinen unsigned int default_timeout; 387f7a2cbf9SVinita S. Maloo unsigned int user_config_timeout; 388cd4e3c3eSJouni Malinen 389cd4e3c3eSJouni Malinen int next_streamid; 390cd4e3c3eSJouni Malinen 391cd4e3c3eSJouni Malinen const char *bridge; /* bridge interface to use in AP mode */ 392cd4e3c3eSJouni Malinen 393cd4e3c3eSJouni Malinen enum sigma_mode { 394cd4e3c3eSJouni Malinen SIGMA_MODE_UNKNOWN, 395cd4e3c3eSJouni Malinen SIGMA_MODE_STATION, 396cd4e3c3eSJouni Malinen SIGMA_MODE_AP, 397cd4e3c3eSJouni Malinen SIGMA_MODE_SNIFFER 398cd4e3c3eSJouni Malinen } mode; 399cd4e3c3eSJouni Malinen 400cd4e3c3eSJouni Malinen /* 401cd4e3c3eSJouni Malinen * Local cached values to handle API that does not provide all the 402cd4e3c3eSJouni Malinen * needed information with commands that actually trigger some 403cd4e3c3eSJouni Malinen * operations. 404cd4e3c3eSJouni Malinen */ 405cd4e3c3eSJouni Malinen int listen_chn; 406cd4e3c3eSJouni Malinen int persistent; 407cd4e3c3eSJouni Malinen int intra_bss; 408cd4e3c3eSJouni Malinen int noa_duration; 409cd4e3c3eSJouni Malinen int noa_interval; 410cd4e3c3eSJouni Malinen int noa_count; 411cd4e3c3eSJouni Malinen enum wfa_cs_wps_method { 412cd4e3c3eSJouni Malinen WFA_CS_WPS_NOT_READY, 413cd4e3c3eSJouni Malinen WFA_CS_WPS_PBC, 414cd4e3c3eSJouni Malinen WFA_CS_WPS_PIN_DISPLAY, 415cd4e3c3eSJouni Malinen WFA_CS_WPS_PIN_LABEL, 416cd4e3c3eSJouni Malinen WFA_CS_WPS_PIN_KEYPAD 417cd4e3c3eSJouni Malinen } wps_method; 418cd4e3c3eSJouni Malinen char wps_pin[9]; 419cd4e3c3eSJouni Malinen 420cd4e3c3eSJouni Malinen struct wfa_cs_p2p_group *groups; 421cd4e3c3eSJouni Malinen 422cd4e3c3eSJouni Malinen char infra_ssid[33]; 423cd4e3c3eSJouni Malinen int infra_network_id; 424cd4e3c3eSJouni Malinen 425cd4e3c3eSJouni Malinen enum p2p_mode { 426cd4e3c3eSJouni Malinen P2P_IDLE, P2P_DISCOVER, P2P_LISTEN, P2P_DISABLE 427cd4e3c3eSJouni Malinen } p2p_mode; 428cd4e3c3eSJouni Malinen 429cd4e3c3eSJouni Malinen int go; 430cd4e3c3eSJouni Malinen int p2p_client; 431016ae6c8SJouni Malinen const char *p2p_ifname; 432cd4e3c3eSJouni Malinen 433cd4e3c3eSJouni Malinen int client_uapsd; 434cd4e3c3eSJouni Malinen 435cd4e3c3eSJouni Malinen char arp_ipaddr[IP_ADDR_STR_LEN]; 436cd4e3c3eSJouni Malinen char arp_ifname[IFNAMSIZ + 1]; 437cd4e3c3eSJouni Malinen 438cd4e3c3eSJouni Malinen enum sta_pmf { 439cd4e3c3eSJouni Malinen STA_PMF_DISABLED, 440cd4e3c3eSJouni Malinen STA_PMF_OPTIONAL, 441cd4e3c3eSJouni Malinen STA_PMF_REQUIRED 442cd4e3c3eSJouni Malinen } sta_pmf; 443cd4e3c3eSJouni Malinen 4446a7c9b48SJouni Malinen int sta_ft_ds; 4456a7c9b48SJouni Malinen 446cd4e3c3eSJouni Malinen int no_tpk_expiration; 447cd4e3c3eSJouni Malinen 448cd4e3c3eSJouni Malinen int er_oper_performed; 449cd4e3c3eSJouni Malinen char er_oper_bssid[20]; 450cd4e3c3eSJouni Malinen int amsdu_size; 451cd4e3c3eSJouni Malinen int back_rcv_buf; 452cd4e3c3eSJouni Malinen 453cd4e3c3eSJouni Malinen int testbed_flag_txsp; 454cd4e3c3eSJouni Malinen int testbed_flag_rxsp; 455cd4e3c3eSJouni Malinen int chwidth; 456cd4e3c3eSJouni Malinen 4578179fee6SJouni Malinen unsigned int akm_values; 4588179fee6SJouni Malinen 459cd4e3c3eSJouni Malinen /* AP configuration */ 460cd4e3c3eSJouni Malinen char ap_ssid[33]; 461b7b297f2SAdil Saeed Musthafa /* 462b7b297f2SAdil Saeed Musthafa * WLAN-TAG of 1 will use 'ap_' variables; 463b7b297f2SAdil Saeed Musthafa * tag higher than 1 will use 'ap_tag_' variables. 464b7b297f2SAdil Saeed Musthafa */ 465b7b297f2SAdil Saeed Musthafa char ap_tag_ssid[MAX_WLAN_TAGS - 1][33]; 466cd4e3c3eSJouni Malinen enum ap_mode { 467cd4e3c3eSJouni Malinen AP_11a, 468cd4e3c3eSJouni Malinen AP_11g, 469cd4e3c3eSJouni Malinen AP_11b, 470cd4e3c3eSJouni Malinen AP_11na, 471cd4e3c3eSJouni Malinen AP_11ng, 472cd4e3c3eSJouni Malinen AP_11ac, 4732712cc86SAlexei Avshalom Lazar AP_11ad, 4744401ceebSPriyadharshini Gowthaman AP_11ax, 475cd4e3c3eSJouni Malinen AP_inval 476cd4e3c3eSJouni Malinen } ap_mode; 477cd4e3c3eSJouni Malinen int ap_channel; 478cd4e3c3eSJouni Malinen int ap_rts; 479cd4e3c3eSJouni Malinen int ap_frgmnt; 480cd4e3c3eSJouni Malinen int ap_bcnint; 481d2e9bb3eSJouni Malinen int ap_start_disabled; 482cd4e3c3eSJouni Malinen struct qos_params { 483cd4e3c3eSJouni Malinen int ac; 484cd4e3c3eSJouni Malinen int cwmin; 485cd4e3c3eSJouni Malinen int cwmax; 486cd4e3c3eSJouni Malinen int aifs; 487cd4e3c3eSJouni Malinen int txop; 488cd4e3c3eSJouni Malinen int acm; 489cd4e3c3eSJouni Malinen } ap_qos[NUM_AP_AC], ap_sta_qos[NUM_AP_AC]; 49057fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_noack; 49157fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_ampdu; 49257fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_amsdu; 49357fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_rx_amsdu; 494cd4e3c3eSJouni Malinen int ap_ampdu_exp; 495baae968eSPravas Kumar Panda int ap_max_mpdu_len; 49657fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_addba_reject; 497cd4e3c3eSJouni Malinen int ap_fixed_rate; 498cd4e3c3eSJouni Malinen int ap_mcs; 499cd4e3c3eSJouni Malinen int ap_rx_streams; 500cd4e3c3eSJouni Malinen int ap_tx_streams; 501cd4e3c3eSJouni Malinen unsigned int ap_vhtmcs_map; 50257fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_ldpc; 50357fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_sig_rts; 504cd4e3c3eSJouni Malinen enum ap_chwidth { 505cd4e3c3eSJouni Malinen AP_20, 506cd4e3c3eSJouni Malinen AP_40, 507cd4e3c3eSJouni Malinen AP_80, 508cd4e3c3eSJouni Malinen AP_160, 50963ab8483Spriyadharshini gowthaman AP_80_80, 510cd4e3c3eSJouni Malinen AP_AUTO 511cd4e3c3eSJouni Malinen } ap_chwidth; 512bf8af292SPradeep Reddy Potteti enum ap_chwidth default_11na_ap_chwidth; 513bf8af292SPradeep Reddy Potteti enum ap_chwidth default_11ng_ap_chwidth; 514cd4e3c3eSJouni Malinen int ap_tx_stbc; 51557fa3d83SJouni Malinen enum value_not_set_enabled_disabled ap_dyn_bw_sig; 516cd4e3c3eSJouni Malinen int ap_sgi80; 517cd4e3c3eSJouni Malinen int ap_p2p_mgmt; 518cd4e3c3eSJouni Malinen enum ap_key_mgmt { 519cd4e3c3eSJouni Malinen AP_OPEN, 520cd4e3c3eSJouni Malinen AP_WPA2_PSK, 521cd4e3c3eSJouni Malinen AP_WPA_PSK, 522cd4e3c3eSJouni Malinen AP_WPA2_EAP, 523cd4e3c3eSJouni Malinen AP_WPA_EAP, 524cd4e3c3eSJouni Malinen AP_WPA2_EAP_MIXED, 52530824df7SJouni Malinen AP_WPA2_PSK_MIXED, 52630824df7SJouni Malinen AP_WPA2_SAE, 52730824df7SJouni Malinen AP_WPA2_PSK_SAE, 528ad395a20SJouni Malinen AP_SUITEB, 529147b3c39SJouni Malinen AP_WPA2_OWE, 5304cf699f1SJouni Malinen AP_WPA2_EAP_OSEN, 5316be21c87SJouni Malinen AP_WPA2_FT_EAP, 5326be21c87SJouni Malinen AP_WPA2_FT_PSK, 5336be21c87SJouni Malinen AP_WPA2_EAP_SHA256, 5346be21c87SJouni Malinen AP_WPA2_PSK_SHA256, 5356be21c87SJouni Malinen AP_WPA2_ENT_FT_EAP, 536c2b9121eSJouni Malinen AP_OSEN, 537cd4e3c3eSJouni Malinen } ap_key_mgmt; 538b7b297f2SAdil Saeed Musthafa enum ap_tag_key_mgmt { 539cd4e3c3eSJouni Malinen AP2_OPEN, 540b7b297f2SAdil Saeed Musthafa AP2_OSEN, 541353ba8b1SJouni Malinen AP2_WPA2_PSK, 542353ba8b1SJouni Malinen AP2_WPA2_OWE, 543b7b297f2SAdil Saeed Musthafa } ap_tag_key_mgmt[MAX_WLAN_TAGS - 1]; 544cd4e3c3eSJouni Malinen int ap_add_sha256; 545de81f395Spriyadharshini gowthaman int ap_add_sha384; 54624dc7e40SSarvepalli, Rajesh Babu int ap_rsn_preauth; 547cd4e3c3eSJouni Malinen enum ap_pmf { 548cd4e3c3eSJouni Malinen AP_PMF_DISABLED, 549cd4e3c3eSJouni Malinen AP_PMF_OPTIONAL, 550cd4e3c3eSJouni Malinen AP_PMF_REQUIRED 551cd4e3c3eSJouni Malinen } ap_pmf; 552cd4e3c3eSJouni Malinen enum ap_cipher { 5532ba24498SJouni Malinen AP_NO_GROUP_CIPHER_SET, 554cd4e3c3eSJouni Malinen AP_CCMP, 555cd4e3c3eSJouni Malinen AP_TKIP, 556cd4e3c3eSJouni Malinen AP_WEP, 557cd4e3c3eSJouni Malinen AP_PLAIN, 558ad395a20SJouni Malinen AP_CCMP_TKIP, 559ad395a20SJouni Malinen AP_GCMP_256, 5603d633daeSJouni Malinen AP_GCMP_128, 5613d633daeSJouni Malinen AP_CCMP_256, 562d538c78eSJouni Malinen AP_CCMP_128_GCMP_256, 5632ba24498SJouni Malinen } ap_cipher, ap_group_cipher; 5643d633daeSJouni Malinen enum ap_group_mgmt_cipher { 5653d633daeSJouni Malinen AP_NO_GROUP_MGMT_CIPHER_SET, 5663d633daeSJouni Malinen AP_BIP_GMAC_256, 5673d633daeSJouni Malinen AP_BIP_CMAC_256, 5683d633daeSJouni Malinen AP_BIP_GMAC_128, 5693d633daeSJouni Malinen AP_BIP_CMAC_128, 5703d633daeSJouni Malinen } ap_group_mgmt_cipher; 571ed670f4cSJouni Malinen char *ap_sae_groups; 5722f524ce8SJouni Malinen int sae_anti_clogging_threshold; 573b347db0fSJouni Malinen int sae_reflection; 5740a9876c1SJouni Malinen int ap_sae_commit_status; 5750a9876c1SJouni Malinen int ap_sae_pk_omit; 5763c740ab7SJouni Malinen int sae_confirm_immediate; 5772126f422SJouni Malinen char ap_passphrase[101]; 57863370625SJouni Malinen char ap_psk[65]; 57909550de6SJouni Malinen char *ap_sae_passwords; 58059fab0f4SJouni Malinen char *ap_sae_pk_modifier; 58159fab0f4SJouni Malinen char *ap_sae_pk_keypair; 582fbf12efeSJouni Malinen char *ap_sae_pk_keypair_sig; 58359fab0f4SJouni Malinen int ap_sae_pk; 584cd4e3c3eSJouni Malinen char ap_wepkey[27]; 585cd4e3c3eSJouni Malinen char ap_radius_ipaddr[20]; 586cd4e3c3eSJouni Malinen int ap_radius_port; 587cd4e3c3eSJouni Malinen char ap_radius_password[200]; 588cd4e3c3eSJouni Malinen char ap2_radius_ipaddr[20]; 589cd4e3c3eSJouni Malinen int ap2_radius_port; 590cd4e3c3eSJouni Malinen char ap2_radius_password[200]; 591cd4e3c3eSJouni Malinen int ap_tdls_prohibit; 592cd4e3c3eSJouni Malinen int ap_tdls_prohibit_chswitch; 593cd4e3c3eSJouni Malinen int ap_hs2; 594cd4e3c3eSJouni Malinen int ap_dgaf_disable; 595cd4e3c3eSJouni Malinen int ap_p2p_cross_connect; 596cd4e3c3eSJouni Malinen int ap_oper_name; 597cd4e3c3eSJouni Malinen int ap_wan_metrics; 598cd4e3c3eSJouni Malinen int ap_conn_capab; 599cd4e3c3eSJouni Malinen int ap_oper_class; 600cd4e3c3eSJouni Malinen 601cd4e3c3eSJouni Malinen int ap_interworking; 602cd4e3c3eSJouni Malinen int ap_access_net_type; 603cd4e3c3eSJouni Malinen int ap_internet; 604cd4e3c3eSJouni Malinen int ap_venue_group; 605cd4e3c3eSJouni Malinen int ap_venue_type; 606cd4e3c3eSJouni Malinen char ap_hessid[20]; 607cd4e3c3eSJouni Malinen char ap_roaming_cons[100]; 608cd4e3c3eSJouni Malinen int ap_venue_name; 609cd4e3c3eSJouni Malinen int ap_net_auth_type; 610cd4e3c3eSJouni Malinen int ap_nai_realm_list; 611cd4e3c3eSJouni Malinen char ap_domain_name_list[1000]; 612cd4e3c3eSJouni Malinen int ap_ip_addr_type_avail; 613cd4e3c3eSJouni Malinen char ap_plmn_mcc[10][4]; 614cd4e3c3eSJouni Malinen char ap_plmn_mnc[10][4]; 615cd4e3c3eSJouni Malinen int ap_gas_cb_delay; 616cd4e3c3eSJouni Malinen int ap_proxy_arp; 617cd4e3c3eSJouni Malinen int ap2_proxy_arp; 618dbbc2c48SJouni Malinen int ap2_osu; 619cd4e3c3eSJouni Malinen int ap_l2tif; 620cd4e3c3eSJouni Malinen int ap_anqpserver; 621cd4e3c3eSJouni Malinen int ap_anqpserver_on; 622cd4e3c3eSJouni Malinen int ap_osu_provider_list; 62393a837f9SJouni Malinen int ap_osu_provider_nai_list; 624cd4e3c3eSJouni Malinen int ap_qos_map_set; 625cd4e3c3eSJouni Malinen int ap_bss_load; 626cd4e3c3eSJouni Malinen char ap_osu_server_uri[10][256]; 627cd4e3c3eSJouni Malinen char ap_osu_ssid[33]; 628cd4e3c3eSJouni Malinen int ap_osu_method[10]; 629cd4e3c3eSJouni Malinen int ap_osu_icon_tag; 63054a89b08SJouni Malinen int ap_venue_url; 631f7ff42b7SJouni Malinen int ap_advice_of_charge; 632ac10453cSJouni Malinen int ap_oper_icon_metadata; 633ac367141SJouni Malinen int ap_tnc_file_name; 634ac367141SJouni Malinen unsigned int ap_tnc_time_stamp; 635cd4e3c3eSJouni Malinen 636cd4e3c3eSJouni Malinen int ap_fake_pkhash; 637cd4e3c3eSJouni Malinen int ap_disable_protection; 638cd4e3c3eSJouni Malinen int ap_allow_vht_wep; 639cd4e3c3eSJouni Malinen int ap_allow_vht_tkip; 640cd4e3c3eSJouni Malinen 641cd4e3c3eSJouni Malinen enum ap_vht_chwidth { 642cd4e3c3eSJouni Malinen AP_20_40_VHT_OPER_CHWIDTH, 643cd4e3c3eSJouni Malinen AP_80_VHT_OPER_CHWIDTH, 644cd4e3c3eSJouni Malinen AP_160_VHT_OPER_CHWIDTH 645cd4e3c3eSJouni Malinen } ap_vht_chwidth; 646cd4e3c3eSJouni Malinen int ap_txBF; 647cd4e3c3eSJouni Malinen int ap_mu_txBF; 648fba27db5SPradeep Reddy POTTETI enum ap_regulatory_mode { 649fba27db5SPradeep Reddy POTTETI AP_80211D_MODE_DISABLED, 650fba27db5SPradeep Reddy POTTETI AP_80211D_MODE_ENABLED, 651fba27db5SPradeep Reddy POTTETI } ap_regulatory_mode; 652fba27db5SPradeep Reddy POTTETI enum ap_dfs_mode { 653fba27db5SPradeep Reddy POTTETI AP_DFS_MODE_DISABLED, 654fba27db5SPradeep Reddy POTTETI AP_DFS_MODE_ENABLED, 655fba27db5SPradeep Reddy POTTETI } ap_dfs_mode; 656264d544aSpriyadharshini gowthaman int ap_ndpa_frame; 657cd4e3c3eSJouni Malinen 6588e26ff4aSpriyadharshini gowthaman int ap_lci; 6598e26ff4aSpriyadharshini gowthaman char ap_val_lci[33]; 660c2357bdcSpriyadharshini gowthaman char ap_infoz[17]; 6618e26ff4aSpriyadharshini gowthaman int ap_lcr; 6628e26ff4aSpriyadharshini gowthaman char ap_val_lcr[400]; 6638e26ff4aSpriyadharshini gowthaman int ap_rrm; 6648e26ff4aSpriyadharshini gowthaman int ap_rtt; 6658e26ff4aSpriyadharshini gowthaman int ap_neighap; /* number of configured neighbor APs */ 6668e26ff4aSpriyadharshini gowthaman unsigned char ap_val_neighap[3][6]; 6678e26ff4aSpriyadharshini gowthaman int ap_opchannel; /* number of oper channels */ 6688e26ff4aSpriyadharshini gowthaman int ap_val_opchannel[3]; 6698e26ff4aSpriyadharshini gowthaman int ap_scan; 670c2357bdcSpriyadharshini gowthaman int ap_fqdn_held; 671c2357bdcSpriyadharshini gowthaman int ap_fqdn_supl; 672a27b5b6eSpriyadharshini gowthaman int ap_msnt_type; 673a27b5b6eSpriyadharshini gowthaman 674b4e05fc1Spriyadharshini gowthaman int ap_mbo; 675b4e05fc1Spriyadharshini gowthaman int ap_ne_class; 676b4e05fc1Spriyadharshini gowthaman int ap_ne_op_ch; 677b4e05fc1Spriyadharshini gowthaman int ap_set_bssidpref; 678b4e05fc1Spriyadharshini gowthaman int ap_btmreq_disassoc_imnt; 679b4e05fc1Spriyadharshini gowthaman int ap_btmreq_term_bit; 6807d9ae389SAdil Saeed Musthafa int ap_disassoc_timer; 6817d9ae389SAdil Saeed Musthafa int ap_btmreq_bss_term_dur; 682604c8261SAdil Saeed Musthafa enum reg_domain { 683604c8261SAdil Saeed Musthafa REG_DOMAIN_NOT_SET, 684604c8261SAdil Saeed Musthafa REG_DOMAIN_LOCAL, 685604c8261SAdil Saeed Musthafa REG_DOMAIN_GLOBAL 686604c8261SAdil Saeed Musthafa } ap_reg_domain; 687cf752fa7SAdil Saeed Musthafa char ap_mobility_domain[10]; 688023108aeSAdil Saeed Musthafa unsigned char ap_cell_cap_pref; 6894ec61bd9SAdil Saeed Musthafa int ap_ft_oa; 6909f943317SJouni Malinen enum value_not_set_enabled_disabled ap_ft_ds; 6914ec61bd9SAdil Saeed Musthafa int ap_name; 69209d613e1Spriyadharshini gowthaman int ap_interface_5g; 69309d613e1Spriyadharshini gowthaman int ap_interface_2g; 694776562e2Spriyadharshini gowthaman int ap_assoc_delay; 69594062b58Spriyadharshini gowthaman int ap_btmreq_bss_term_tsf; 69600798a21Spriyadharshini gowthaman int ap_fils_dscv_int; 69700798a21Spriyadharshini gowthaman int ap_nairealm_int; 69800798a21Spriyadharshini gowthaman char ap_nairealm[33]; 69900798a21Spriyadharshini gowthaman int ap_blechanutil; 70000798a21Spriyadharshini gowthaman int ap_ble_admit_cap; 70100798a21Spriyadharshini gowthaman int ap_datappdudura; 70200798a21Spriyadharshini gowthaman int ap_airtimefract; 70300798a21Spriyadharshini gowthaman char ap_dhcpserv_ipaddr[20]; 70400798a21Spriyadharshini gowthaman int ap_dhcp_stop; 70500798a21Spriyadharshini gowthaman int ap_bawinsize; 70600798a21Spriyadharshini gowthaman int ap_blestacnt; 707cb22e43aSpriyadharshini gowthaman int ap_ul_availcap; 708cb22e43aSpriyadharshini gowthaman int ap_dl_availcap; 709de81f395Spriyadharshini gowthaman int ap_akm; 710da5f35bcSJouni Malinen unsigned int ap_akm_values; 711de81f395Spriyadharshini gowthaman int ap_pmksa; 712de81f395Spriyadharshini gowthaman int ap_pmksa_caching; 71305d005a3SJouni Malinen int ap_beacon_prot; 714c098c442SJouni Malinen u8 ap_transition_disable; 71563ab8483Spriyadharshini gowthaman int ap_80plus80; 7169149afc1Spriyadharshini gowthaman int ap_oper_chn; 7174ec61bd9SAdil Saeed Musthafa 71869063725SAdil Saeed Musthafa struct mbo_pref_ap mbo_pref_aps[MBO_MAX_PREF_BSSIDS]; 71969063725SAdil Saeed Musthafa struct mbo_pref_ap mbo_self_ap_tuple; 72069063725SAdil Saeed Musthafa int mbo_pref_ap_cnt; 7214ec61bd9SAdil Saeed Musthafa unsigned char ft_bss_mac_list[MAX_FT_BSS_LIST][ETH_ALEN]; 7224ec61bd9SAdil Saeed Musthafa int ft_bss_mac_cnt; 723b4e05fc1Spriyadharshini gowthaman 724c067edfbSPriyadharshini Gowthaman char *ar_ltf; 725c067edfbSPriyadharshini Gowthaman 726bc948896SPriyadharshini Gowthaman int ap_numsounddim; 72778ee2ef2SPriyadharshini Gowthaman unsigned int he_mcsnssmap; 72878ee2ef2SPriyadharshini Gowthaman int he_ul_mcs; 72921f7440cSPriyadharshini Gowthaman int he_mmss; 73088d55c87SPriyadharshini Gowthaman int he_srctrl_allow; 731bc948896SPriyadharshini Gowthaman 732ce7ba82fSPriyadharshini Gowthaman int ap_ocvc; 733ce7ba82fSPriyadharshini Gowthaman 73400798a21Spriyadharshini gowthaman enum value_not_set_enabled_disabled ap_oce; 73500798a21Spriyadharshini gowthaman enum value_not_set_enabled_disabled ap_filsdscv; 73600798a21Spriyadharshini gowthaman enum value_not_set_enabled_disabled ap_filshlp; 73700798a21Spriyadharshini gowthaman enum value_not_set_enabled_disabled ap_broadcast_ssid; 73800798a21Spriyadharshini gowthaman enum value_not_set_enabled_disabled ap_rnr; 73900798a21Spriyadharshini gowthaman enum value_not_set_enabled_disabled ap_esp; 74000798a21Spriyadharshini gowthaman 741c067edfbSPriyadharshini Gowthaman enum value_not_set_enabled_disabled ap_he_ulofdma; 742fe60c504SPriyadharshini Gowthaman enum value_not_set_enabled_disabled ap_he_dlofdma; 743670b3237SPriyadharshini Gowthaman enum value_not_set_enabled_disabled ap_bcc; 7446bc4c1eeSPriyadharshini Gowthaman enum value_not_set_enabled_disabled ap_he_frag; 74521895a57SPriyadharshini Gowthaman enum value_not_set_enabled_disabled ap_mu_edca; 74643d6b417SPriyadharshini Gowthaman enum value_not_set_enabled_disabled ap_he_rtsthrshld; 7478018c98dSPriyadharshini Gowthaman enum value_not_set_enabled_disabled ap_mbssid; 748ae0a605cSPriyadharshini Gowthaman enum value_not_set_enabled_disabled ap_twtresp; 74996d542e0SPriyadharshini Gowthaman enum value_not_set_enabled_disabled he_sounding; 7509b7dbe1aSPriyadharshini Gowthaman enum value_not_set_enabled_disabled he_set_sta_1x1; 751c067edfbSPriyadharshini Gowthaman 752350f1913Spriyadharshini gowthaman enum ppdu { 753350f1913Spriyadharshini gowthaman PPDU_NOT_SET, 754350f1913Spriyadharshini gowthaman PPDU_MU, 755350f1913Spriyadharshini gowthaman PPDU_SU, 756350f1913Spriyadharshini gowthaman PPDU_ER, 757350f1913Spriyadharshini gowthaman PPDU_TB, 758fe60c504SPriyadharshini Gowthaman PPDU_HESU, 759350f1913Spriyadharshini gowthaman } ap_he_ppdu; 760350f1913Spriyadharshini gowthaman 7611a686bd3SPriyadharshini Gowthaman enum bufsize { 7621a686bd3SPriyadharshini Gowthaman BA_BUFSIZE_NOT_SET, 7631a686bd3SPriyadharshini Gowthaman BA_BUFSIZE_64, 7641a686bd3SPriyadharshini Gowthaman BA_BUFSIZE_256, 7651a686bd3SPriyadharshini Gowthaman } ap_ba_bufsize; 7661a686bd3SPriyadharshini Gowthaman 767dee79e2aSPriyadharshini Gowthaman enum mimo { 768dee79e2aSPriyadharshini Gowthaman MIMO_NOT_SET, 769dee79e2aSPriyadharshini Gowthaman MIMO_DL, 770dee79e2aSPriyadharshini Gowthaman MIMO_UL, 771dee79e2aSPriyadharshini Gowthaman } ap_he_mimo; 772dee79e2aSPriyadharshini Gowthaman 773bc180dc5SAlexei Avshalom Lazar struct sigma_ese_alloc ap_ese_allocs[MAX_ESE_ALLOCS]; 774bc180dc5SAlexei Avshalom Lazar int ap_num_ese_allocs; 775bc180dc5SAlexei Avshalom Lazar 776cd4e3c3eSJouni Malinen const char *hostapd_debug_log; 7773e8267ecSAlexei Avshalom Lazar const char *wpa_supplicant_debug_log; 778cd4e3c3eSJouni Malinen 779cd4e3c3eSJouni Malinen #ifdef CONFIG_TRAFFIC_AGENT 780cd4e3c3eSJouni Malinen /* Traffic Agent */ 781cd4e3c3eSJouni Malinen struct sigma_stream streams[MAX_SIGMA_STREAMS]; 782cd4e3c3eSJouni Malinen int stream_id; 783cd4e3c3eSJouni Malinen int num_streams; 784cd4e3c3eSJouni Malinen pthread_t thr; 785cd4e3c3eSJouni Malinen #endif /* CONFIG_TRAFFIC_AGENT */ 786cd4e3c3eSJouni Malinen 787c2493f83SJouni Malinen unsigned int throughput_pktsize; /* If non-zero, override pktsize for 788c2493f83SJouni Malinen * throughput tests */ 789cd4e3c3eSJouni Malinen int no_timestamps; 790cd4e3c3eSJouni Malinen 791cd4e3c3eSJouni Malinen const char *sniffer_ifname; 792cd4e3c3eSJouni Malinen const char *set_macaddr; 793cd4e3c3eSJouni Malinen int tmp_mac_addr; 794cd4e3c3eSJouni Malinen int ap_is_dual; 795cd4e3c3eSJouni Malinen enum ap_mode ap_mode_1; 796cd4e3c3eSJouni Malinen enum ap_chwidth ap_chwidth_1; 797cd4e3c3eSJouni Malinen int ap_channel_1; 798cd4e3c3eSJouni Malinen char ap_countrycode[3]; 799cd4e3c3eSJouni Malinen 800cd4e3c3eSJouni Malinen int ap_wpsnfc; 801cd4e3c3eSJouni Malinen 8020d3db632SPradeep Reddy POTTETI enum ap_wme { 8030d3db632SPradeep Reddy POTTETI AP_WME_OFF, 8040d3db632SPradeep Reddy POTTETI AP_WME_ON, 8050d3db632SPradeep Reddy POTTETI } ap_wme; 8060d3db632SPradeep Reddy POTTETI 80702e3b826SMohammed Shafi Shajakhan enum ap_wmmps { 80802e3b826SMohammed Shafi Shajakhan AP_WMMPS_OFF, 80902e3b826SMohammed Shafi Shajakhan AP_WMMPS_ON, 81002e3b826SMohammed Shafi Shajakhan } ap_wmmps; 81102e3b826SMohammed Shafi Shajakhan 8124b0cdee4SPradeep Reddy Potteti enum sec_ch_offset ap_chwidth_offset; 8134b0cdee4SPradeep Reddy Potteti 814ba4f2d42SJouni Malinen char *ap_dpp_conf_addr; 815ba4f2d42SJouni Malinen char *ap_dpp_conf_pkhash; 816ba4f2d42SJouni Malinen 817cd4e3c3eSJouni Malinen #ifdef CONFIG_SNIFFER 818cd4e3c3eSJouni Malinen pid_t sniffer_pid; 819cd4e3c3eSJouni Malinen char sniffer_filename[200]; 820cd4e3c3eSJouni Malinen #endif /* CONFIG_SNIFFER */ 821cd4e3c3eSJouni Malinen 822cd4e3c3eSJouni Malinen int last_set_ip_config_ipv6; 8239c381f59SAmarnath Hullur Subramanyam #ifdef MIRACAST 8249c381f59SAmarnath Hullur Subramanyam pthread_t rtsp_thread_handle; 8259c381f59SAmarnath Hullur Subramanyam int wfd_device_type; /* 0 for source, 1 for sink */ 8269c381f59SAmarnath Hullur Subramanyam char peer_mac_address[32]; 827bf9bcdf6SSunil Dutt char modified_peer_mac_address[32]; 8289c381f59SAmarnath Hullur Subramanyam void *miracast_lib; 8299c381f59SAmarnath Hullur Subramanyam const char *miracast_lib_path; 8309c381f59SAmarnath Hullur Subramanyam char mdns_instance_name[64]; 8319c381f59SAmarnath Hullur Subramanyam #endif /* MIRACAST */ 832cd4e3c3eSJouni Malinen 833cd4e3c3eSJouni Malinen int tid_to_handle[8]; /* Mapping of TID to handle */ 834cd4e3c3eSJouni Malinen int dialog_token; /* Used for generating unique handle for an addTs */ 835cd4e3c3eSJouni Malinen 836cd4e3c3eSJouni Malinen enum sigma_program { 837cd4e3c3eSJouni Malinen PROGRAM_UNKNOWN = 0, 838cd4e3c3eSJouni Malinen PROGRAM_TDLS, 839cd4e3c3eSJouni Malinen PROGRAM_HS2, 840cd4e3c3eSJouni Malinen PROGRAM_HS2_R2, 841cd4e3c3eSJouni Malinen PROGRAM_WFD, 842659a34c4SAmarnath Hullur Subramanyam PROGRAM_DISPLAYR2, 843cd4e3c3eSJouni Malinen PROGRAM_PMF, 844cd4e3c3eSJouni Malinen PROGRAM_WPS, 845cd4e3c3eSJouni Malinen PROGRAM_60GHZ, 846cd4e3c3eSJouni Malinen PROGRAM_HT, 847cd4e3c3eSJouni Malinen PROGRAM_VHT, 848cd4e3c3eSJouni Malinen PROGRAM_NAN, 84912dd4145Spriyadharshini gowthaman PROGRAM_LOC, 85033ea287aSAdil Saeed Musthafa PROGRAM_MBO, 8515c3813a7SJouni Malinen PROGRAM_IOTLP, 8525c3813a7SJouni Malinen PROGRAM_DPP, 853a2cb567bSAnkita Bajaj PROGRAM_OCE, 8540e209fccSpriyadharshini gowthaman PROGRAM_WPA3, 8558f9c8687SAmarnath Hullur Subramanyam PROGRAM_HE, 856ba630459SJouni Malinen PROGRAM_HS2_R3, 857f642d6adSVamsi Krishna PROGRAM_QM, 858cd4e3c3eSJouni Malinen } program; 859cd4e3c3eSJouni Malinen 860cd4e3c3eSJouni Malinen enum device_type { 861cd4e3c3eSJouni Malinen device_type_unknown, 862cd4e3c3eSJouni Malinen AP_unknown, 863cd4e3c3eSJouni Malinen AP_testbed, 864cd4e3c3eSJouni Malinen AP_dut, 865cd4e3c3eSJouni Malinen STA_unknown, 866cd4e3c3eSJouni Malinen STA_testbed, 867cd4e3c3eSJouni Malinen STA_dut 868cd4e3c3eSJouni Malinen } device_type; 869cd4e3c3eSJouni Malinen 870cd4e3c3eSJouni Malinen enum { 871cd4e3c3eSJouni Malinen DEVROLE_UNKNOWN = 0, 872cd4e3c3eSJouni Malinen DEVROLE_STA, 873cd4e3c3eSJouni Malinen DEVROLE_PCP, 8742712cc86SAlexei Avshalom Lazar DEVROLE_STA_CFON, 8752712cc86SAlexei Avshalom Lazar DEVROLE_AP, 876cd4e3c3eSJouni Malinen } dev_role; 877cd4e3c3eSJouni Malinen 87833f700cfSAlexei Avshalom Lazar enum wps_band { 87933f700cfSAlexei Avshalom Lazar WPS_BAND_NON_60G = 0, 88033f700cfSAlexei Avshalom Lazar WPS_BAND_60G, 88133f700cfSAlexei Avshalom Lazar } band; 88233f700cfSAlexei Avshalom Lazar 883eee9ab0aSAlexei Avshalom Lazar int wps_disable; /* Used for 60G to disable PCP from sending WPS IE */ 88433f700cfSAlexei Avshalom Lazar int wsc_fragment; /* simulate WSC IE fragmentation */ 8852eccf4d4SAlexei Avshalom Lazar int eap_fragment; /* simulate EAP fragmentation */ 886744ae8abSAlexei Avshalom Lazar int wps_forced_version; /* Used to force reported WPS version */ 887b094bf08SAlexei Avshalom Lazar enum { 888b094bf08SAlexei Avshalom Lazar /* no change */ 889b094bf08SAlexei Avshalom Lazar FORCE_RSN_IE_NONE = 0, 890b094bf08SAlexei Avshalom Lazar /* if exists, remove and clear privacy bit */ 891b094bf08SAlexei Avshalom Lazar FORCE_RSN_IE_REMOVE, 892b094bf08SAlexei Avshalom Lazar /* if not exists, add and set privacy bit */ 893b094bf08SAlexei Avshalom Lazar FORCE_RSN_IE_ADD, 894b094bf08SAlexei Avshalom Lazar } force_rsn_ie; /* override RSN IE in association request */ 89533f700cfSAlexei Avshalom Lazar 896cd4e3c3eSJouni Malinen const char *version; 897cd4e3c3eSJouni Malinen int no_ip_addr_set; 898cd4e3c3eSJouni Malinen int sta_channel; 899cd4e3c3eSJouni Malinen 900cd4e3c3eSJouni Malinen const char *summary_log; 901cd4e3c3eSJouni Malinen const char *hostapd_entropy_log; 902cd4e3c3eSJouni Malinen 903cd4e3c3eSJouni Malinen int iface_down_on_reset; 904cd4e3c3eSJouni Malinen int write_stats; /* traffic stream e2e*.txt files */ 90573d7af09SBala Krishna Bhamidipati int sim_no_username; /* do not set SIM username to use real SIM */ 9065db3b104SJouni Malinen 9075db3b104SJouni Malinen const char *vendor_name; /* device_get_info vendor override */ 9085db3b104SJouni Malinen const char *model_name; /* device_get_info model override */ 9095db3b104SJouni Malinen const char *version_name; /* device_get_info version override */ 9100128bf99SKiran Kumar Lokere const char *log_file_dir; /* Directory to generate log file */ 9110128bf99SKiran Kumar Lokere FILE *log_file_fd; /* Pointer to log file */ 9127d37f411SRakesh Sunki 91314cfcd25SRakesh Sunki int ndp_enable; /* Flag which is set once the NDP is setup */ 91414cfcd25SRakesh Sunki 9158863ec7cSPeng Xu int ndpe; /* Flag indicating NDPE is supported */ 9168863ec7cSPeng Xu u16 trans_port; /* transport port number for TCP/UDP connection */ 9178863ec7cSPeng Xu u8 trans_proto; /* transport protocol, 0x06: TCP, 0x11: UDP */ 91847d709baSPeng Xu u8 nan_ipv6_addr[IPV6_ADDR_LEN]; /* NAN IPv6 address */ 91947d709baSPeng Xu u8 nan_ipv6_len; /* NAN IPv6 address length */ 9208863ec7cSPeng Xu 9217d37f411SRakesh Sunki /* Length of nan_pmk in octets */ 9227d37f411SRakesh Sunki u8 nan_pmk_len; 9237d37f411SRakesh Sunki 9247d37f411SRakesh Sunki /* 9257d37f411SRakesh Sunki * PMK: Info is optional in Discovery phase. PMK info can 9267d37f411SRakesh Sunki * be passed during the NDP session. 9277d37f411SRakesh Sunki */ 9287d37f411SRakesh Sunki u8 nan_pmk[32]; 92933ea287aSAdil Saeed Musthafa 93033ea287aSAdil Saeed Musthafa enum value_not_set_enabled_disabled wnm_bss_max_feature; 93133ea287aSAdil Saeed Musthafa int wnm_bss_max_idle_time; 93233ea287aSAdil Saeed Musthafa enum value_not_set_enabled_disabled wnm_bss_max_protection; 9330040258bSAshwini Patil 9340040258bSAshwini Patil char *non_pref_ch_list; /* MBO: non-preferred channel report */ 9355acd738cSAshwini Patil char *btm_query_cand_list; /* Candidate list for BTM Query */ 9363c367e8dSJouni Malinen 9376814313dSJouni Malinen char *sae_commit_override; 9383c367e8dSJouni Malinen char *rsne_override; 9397960e3adSJouni Malinen char *rsnxe_override_eapol; 940134fe3c3SJouni Malinen int sta_associate_wait_connect; 941134fe3c3SJouni Malinen char server_cert_hash[65]; 94237d5c69eSJouni Malinen int server_cert_tod; 943134fe3c3SJouni Malinen int sta_tod_policy; 944d6bf1b4aSJouni Malinen const char *hostapd_bin; 945d6bf1b4aSJouni Malinen int use_hostapd_pid_file; 946d6bf1b4aSJouni Malinen const char *hostapd_ifname; 947d86e5828SJouni Malinen int hostapd_running; 948d86e5828SJouni Malinen 949b1dd21f8SJouni Malinen char *dpp_peer_uri; 950d86e5828SJouni Malinen int dpp_local_bootstrap; 951d86e5828SJouni Malinen int dpp_conf_id; 9521dabb5a6SJouni Malinen int dpp_network_id; 9531bde7947SAnkita Bajaj 9541bde7947SAnkita Bajaj u8 fils_hlp; 9551bde7947SAnkita Bajaj pthread_t hlp_thread; 956291d97daSPeng Xu 957291d97daSPeng Xu #ifdef NL80211_SUPPORT 958291d97daSPeng Xu struct nl80211_ctx *nl_ctx; 959076081f1SSunil Dutt int config_rsnie; 960291d97daSPeng Xu #endif /* NL80211_SUPPORT */ 961ac6c511cSArif Hussain 962ac6c511cSArif Hussain int sta_nss; 9632052daa2SAnurag Das 9642052daa2SAnurag Das #ifdef ANDROID 9652052daa2SAnurag Das int nanservicediscoveryinprogress; 9662052daa2SAnurag Das #endif /* ANDROID */ 967d06f100bSPriyadharshini Gowthaman 968d06f100bSPriyadharshini Gowthaman const char *priv_cmd; /* iwpriv / cfg80211tool command name */ 9690128bf99SKiran Kumar Lokere 9700128bf99SKiran Kumar Lokere unsigned int wpa_log_size; 9710128bf99SKiran Kumar Lokere char dev_start_test_runtime_id[100]; 9722dfb1daeSVinay Gannevaram #ifdef ANDROID_WIFI_HAL 9732dfb1daeSVinay Gannevaram wifi_interface_handle wifi_hal_iface_handle; 9742dfb1daeSVinay Gannevaram wifi_handle wifi_hal_handle; 9752dfb1daeSVinay Gannevaram bool wifi_hal_initialized; 9762dfb1daeSVinay Gannevaram #endif /*ANDROID_WIFI_HAL*/ 97711e5521bSJouni Malinen 97811e5521bSJouni Malinen int sae_h2e_default; 97911e5521bSJouni Malinen enum { 98011e5521bSJouni Malinen SAE_PWE_DEFAULT, 98111e5521bSJouni Malinen SAE_PWE_LOOP, 98211e5521bSJouni Malinen SAE_PWE_H2E 98311e5521bSJouni Malinen } sae_pwe; 9846010ce7dSHu Wang int owe_ptk_workaround; 9852e2097d0SLavanya Suresh struct dut_hw_modes hw_modes; 986c1633d27SVamsi Krishna int ocvc; 987c1f71b67SVeerendranath Jakkam int beacon_prot; 98867433fc6SJouni Malinen int client_privacy; 98947867204SVeerendranath Jakkam int client_privacy_default; 99054ddc35cSVeerendranath Jakkam int saquery_oci_freq; 991f0f8805aSVenkateswara Naralasetty char device_driver[32]; 992cd4e3c3eSJouni Malinen }; 993cd4e3c3eSJouni Malinen 994cd4e3c3eSJouni Malinen 995cd4e3c3eSJouni Malinen enum sigma_dut_print_level { 996cd4e3c3eSJouni Malinen DUT_MSG_DEBUG, DUT_MSG_INFO, DUT_MSG_ERROR 997cd4e3c3eSJouni Malinen }; 998cd4e3c3eSJouni Malinen 999cd4e3c3eSJouni Malinen void sigma_dut_print(struct sigma_dut *dut, int level, const char *fmt, ...) 1000cd4e3c3eSJouni Malinen PRINTF_FORMAT(3, 4); 1001cd4e3c3eSJouni Malinen 1002cd4e3c3eSJouni Malinen void sigma_dut_summary(struct sigma_dut *dut, const char *fmt, ...) 1003cd4e3c3eSJouni Malinen PRINTF_FORMAT(2, 3); 1004cd4e3c3eSJouni Malinen 1005cd4e3c3eSJouni Malinen 1006cd4e3c3eSJouni Malinen enum sigma_status { 1007cd4e3c3eSJouni Malinen SIGMA_RUNNING, SIGMA_INVALID, SIGMA_ERROR, SIGMA_COMPLETE 1008cd4e3c3eSJouni Malinen }; 1009cd4e3c3eSJouni Malinen 1010cd4e3c3eSJouni Malinen void send_resp(struct sigma_dut *dut, struct sigma_conn *conn, 101176401f50SJouni Malinen enum sigma_status status, const char *buf); 1012cd4e3c3eSJouni Malinen 1013cd4e3c3eSJouni Malinen const char * get_param(struct sigma_cmd *cmd, const char *name); 1014bc180dc5SAlexei Avshalom Lazar const char * get_param_indexed(struct sigma_cmd *cmd, const char *name, 1015bc180dc5SAlexei Avshalom Lazar int index); 1016cd4e3c3eSJouni Malinen 1017cd4e3c3eSJouni Malinen int sigma_dut_reg_cmd(const char *cmd, 1018cd4e3c3eSJouni Malinen int (*validate)(struct sigma_cmd *cmd), 101926a5b76dSJouni Malinen enum sigma_cmd_result (*process)(struct sigma_dut *dut, 1020cd4e3c3eSJouni Malinen struct sigma_conn *conn, 1021cd4e3c3eSJouni Malinen struct sigma_cmd *cmd)); 1022cd4e3c3eSJouni Malinen 1023cd4e3c3eSJouni Malinen void sigma_dut_register_cmds(void); 1024cd4e3c3eSJouni Malinen 1025a485fd1dSJouni Malinen enum sigma_cmd_result cmd_sta_send_frame(struct sigma_dut *dut, 1026a485fd1dSJouni Malinen struct sigma_conn *conn, 1027cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1028cd4e3c3eSJouni Malinen int cmd_sta_set_parameter(struct sigma_dut *dut, struct sigma_conn *conn, 1029cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1030a485fd1dSJouni Malinen enum sigma_cmd_result cmd_ap_send_frame(struct sigma_dut *dut, 1031a485fd1dSJouni Malinen struct sigma_conn *conn, 1032cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1033a485fd1dSJouni Malinen enum sigma_cmd_result cmd_wlantest_send_frame(struct sigma_dut *dut, 1034a485fd1dSJouni Malinen struct sigma_conn *conn, 1035cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 10360d5825b5SAnkita Bajaj int sta_cfon_set_wireless(struct sigma_dut *dut, struct sigma_conn *conn, 10370d5825b5SAnkita Bajaj struct sigma_cmd *cmd); 10380d5825b5SAnkita Bajaj int sta_cfon_get_mac_address(struct sigma_dut *dut, struct sigma_conn *conn, 10390d5825b5SAnkita Bajaj struct sigma_cmd *cmd); 10400d5825b5SAnkita Bajaj int sta_cfon_reset_default(struct sigma_dut *dut, struct sigma_conn *conn, 10410d5825b5SAnkita Bajaj struct sigma_cmd *cmd); 1042cd4e3c3eSJouni Malinen 1043cd4e3c3eSJouni Malinen enum driver_type { 1044cd4e3c3eSJouni Malinen DRIVER_NOT_SET, 1045cd4e3c3eSJouni Malinen DRIVER_ATHEROS, 1046cd4e3c3eSJouni Malinen DRIVER_WCN, 1047cd4e3c3eSJouni Malinen DRIVER_MAC80211, 1048cd4e3c3eSJouni Malinen DRIVER_AR6003, 1049cd4e3c3eSJouni Malinen DRIVER_WIL6210, 1050cd4e3c3eSJouni Malinen DRIVER_QNXNTO, 1051b692f107SSreelakshmi Konamki DRIVER_OPENWRT, 1052b692f107SSreelakshmi Konamki DRIVER_LINUX_WCN, 1053cd4e3c3eSJouni Malinen }; 1054cd4e3c3eSJouni Malinen 1055cd4e3c3eSJouni Malinen enum openwrt_driver_type { 1056cd4e3c3eSJouni Malinen OPENWRT_DRIVER_NOT_SET, 1057cd4e3c3eSJouni Malinen OPENWRT_DRIVER_ATHEROS 1058cd4e3c3eSJouni Malinen }; 1059cd4e3c3eSJouni Malinen 1060cd4e3c3eSJouni Malinen #define DRIVER_NAME_60G "wil6210" 1061cd4e3c3eSJouni Malinen 1062cd4e3c3eSJouni Malinen int set_wifi_chip(const char *chip_type); 1063016ae6c8SJouni Malinen enum driver_type get_driver_type(struct sigma_dut *dut); 1064cd4e3c3eSJouni Malinen enum openwrt_driver_type get_openwrt_driver_type(void); 1065f0f8805aSVenkateswara Naralasetty void sigma_dut_get_device_driver_name(const char *ifname, char *name, 1066f0f8805aSVenkateswara Naralasetty size_t size); 1067cd4e3c3eSJouni Malinen int file_exists(const char *fname); 1068cd4e3c3eSJouni Malinen 1069cd4e3c3eSJouni Malinen struct wpa_ctrl; 1070cd4e3c3eSJouni Malinen 1071cd4e3c3eSJouni Malinen int wps_connection_event(struct sigma_dut *dut, struct sigma_conn *conn, 1072cd4e3c3eSJouni Malinen struct wpa_ctrl *ctrl, const char *intf, int p2p_resp); 1073cd4e3c3eSJouni Malinen int ascii2hexstr(const char *str, char *hex); 1074cd4e3c3eSJouni Malinen void disconnect_station(struct sigma_dut *dut); 1075cd4e3c3eSJouni Malinen void nfc_status(struct sigma_dut *dut, const char *state, const char *oper); 1076cd4e3c3eSJouni Malinen int get_ip_config(struct sigma_dut *dut, const char *ifname, char *buf, 1077cd4e3c3eSJouni Malinen size_t buf_len); 1078cd4e3c3eSJouni Malinen int ath6kl_client_uapsd(struct sigma_dut *dut, const char *intf, int uapsd); 1079cd4e3c3eSJouni Malinen int is_ip_addr(const char *str); 1080cd4e3c3eSJouni Malinen int run_system(struct sigma_dut *dut, const char *cmd); 10815f793f0dSAdil Saeed Musthafa int run_system_wrapper(struct sigma_dut *dut, const char *cmd, ...); 1082d06f100bSPriyadharshini Gowthaman int run_iwpriv(struct sigma_dut *dut, const char *ifname, const char *cmd, ...); 1083a485fd1dSJouni Malinen enum sigma_cmd_result cmd_wlantest_set_channel(struct sigma_dut *dut, 1084a485fd1dSJouni Malinen struct sigma_conn *conn, 1085cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1086a2df7db5SJouni Malinen void wlantest_register_cmds(void); 1087cd4e3c3eSJouni Malinen void sniffer_close(struct sigma_dut *dut); 1088cd4e3c3eSJouni Malinen 10892dfb1daeSVinay Gannevaram /* sigma_dut.c */ 10902dfb1daeSVinay Gannevaram int wifi_hal_initialize(struct sigma_dut *dut); 10912dfb1daeSVinay Gannevaram 1092cd4e3c3eSJouni Malinen /* ap.c */ 1093a2df7db5SJouni Malinen void ap_register_cmds(void); 1094cd4e3c3eSJouni Malinen void ath_disable_txbf(struct sigma_dut *dut, const char *intf); 1095818afef5SPriyadharshini Gowthaman void ath_config_dyn_bw_sig(struct sigma_dut *dut, const char *ifname, 1096818afef5SPriyadharshini Gowthaman const char *val); 10978c5b9a4cSPriyadharshini Gowthaman void novap_reset(struct sigma_dut *dut, const char *ifname, int reset); 10982e6ccc22SJouni Malinen int get_hwaddr(const char *ifname, unsigned char *hwaddr); 1099a485fd1dSJouni Malinen enum sigma_cmd_result cmd_ap_config_commit(struct sigma_dut *dut, 1100a485fd1dSJouni Malinen struct sigma_conn *conn, 1101a326d7b5SJouni Malinen struct sigma_cmd *cmd); 1102043230bdSAlexei Avshalom Lazar int ap_wps_registration(struct sigma_dut *dut, struct sigma_conn *conn, 1103043230bdSAlexei Avshalom Lazar struct sigma_cmd *cmd); 1104314b9c65SJouni Malinen const char * get_hostapd_ifname(struct sigma_dut *dut); 1105cd4e3c3eSJouni Malinen 1106cd4e3c3eSJouni Malinen /* sta.c */ 1107a2df7db5SJouni Malinen void sta_register_cmds(void); 1108cd4e3c3eSJouni Malinen int set_ps(const char *intf, struct sigma_dut *dut, int enabled); 1109cd4e3c3eSJouni Malinen void ath_set_zero_crc(struct sigma_dut *dut, const char *val); 1110cd4e3c3eSJouni Malinen void ath_set_cts_width(struct sigma_dut *dut, const char *ifname, 1111cd4e3c3eSJouni Malinen const char *val); 1112cd4e3c3eSJouni Malinen int ath_set_width(struct sigma_dut *dut, struct sigma_conn *conn, 1113cd4e3c3eSJouni Malinen const char *intf, const char *val); 111449498b8eSAlexei Avshalom Lazar int sta_set_60g_abft_len(struct sigma_dut *dut, struct sigma_conn *conn, 111549498b8eSAlexei Avshalom Lazar int abft_len); 11160fe101e9SLior David int wil6210_send_frame_60g(struct sigma_dut *dut, struct sigma_conn *conn, 11170fe101e9SLior David struct sigma_cmd *cmd); 11181bde7947SAnkita Bajaj int hwaddr_aton(const char *txt, unsigned char *addr); 11191bde7947SAnkita Bajaj int set_ipv4_addr(struct sigma_dut *dut, const char *ifname, 11201bde7947SAnkita Bajaj const char *ip, const char *mask); 11211bde7947SAnkita Bajaj int set_ipv4_gw(struct sigma_dut *dut, const char *gw); 112279fa3fedSAlexei Avshalom Lazar int send_addba_60g(struct sigma_dut *dut, struct sigma_conn *conn, 112379fa3fedSAlexei Avshalom Lazar struct sigma_cmd *cmd, const char *param); 1124bc180dc5SAlexei Avshalom Lazar int wil6210_set_ese(struct sigma_dut *dut, int count, 1125bc180dc5SAlexei Avshalom Lazar struct sigma_ese_alloc *allocs); 1126bc180dc5SAlexei Avshalom Lazar int sta_extract_60g_ese(struct sigma_dut *dut, struct sigma_cmd *cmd, 1127bc180dc5SAlexei Avshalom Lazar struct sigma_ese_alloc *allocs, int *allocs_size); 1128aad97b04SAlexei Avshalom Lazar int wil6210_set_force_mcs(struct sigma_dut *dut, int force, int mcs); 1129b680697aSQiwei Cai int sta_set_addba_buf_size(struct sigma_dut *dut, 1130b680697aSQiwei Cai const char *intf, int bufsize); 113126c0f86cSKiran Kumar Lokere #ifdef NL80211_SUPPORT 113226c0f86cSKiran Kumar Lokere int wcn_set_he_ltf(struct sigma_dut *dut, const char *intf, 113326c0f86cSKiran Kumar Lokere enum qca_wlan_he_ltf_cfg ltf); 113426c0f86cSKiran Kumar Lokere #endif /* NL80211_SUPPORT */ 1135cd4e3c3eSJouni Malinen 1136cd4e3c3eSJouni Malinen /* p2p.c */ 1137a2df7db5SJouni Malinen void p2p_register_cmds(void); 1138cd4e3c3eSJouni Malinen int p2p_cmd_sta_get_parameter(struct sigma_dut *dut, struct sigma_conn *conn, 1139cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1140091e253dSPurushottam Kushwaha void p2p_create_event_thread(struct sigma_dut *dut); 1141091e253dSPurushottam Kushwaha void stop_event_thread(void); 114289b37cdcSAmarnath Hullur Subramanyam void start_dhcp(struct sigma_dut *dut, const char *group_ifname, int go); 114389b37cdcSAmarnath Hullur Subramanyam void stop_dhcp(struct sigma_dut *dut, const char *group_ifname, int go); 114489b37cdcSAmarnath Hullur Subramanyam int p2p_discover_peer(struct sigma_dut *dut, const char *ifname, 114589b37cdcSAmarnath Hullur Subramanyam const char *peer, int full); 1146a0bf62a3SJouni Malinen enum sigma_cmd_result cmd_sta_p2p_reset(struct sigma_dut *dut, 1147a0bf62a3SJouni Malinen struct sigma_conn *conn, 1148a0bf62a3SJouni Malinen struct sigma_cmd *cmd); 1149cd4e3c3eSJouni Malinen 1150c54710deSJouni Malinen /* basic.c */ 1151a2df7db5SJouni Malinen void basic_register_cmds(void); 1152c54710deSJouni Malinen void get_ver(const char *cmd, char *buf, size_t buflen); 1153c54710deSJouni Malinen 115472462ef3Spriyadharshini gowthaman /* utils.c */ 1155cd4e3c3eSJouni Malinen enum sigma_program sigma_program_to_enum(const char *prog); 11569a4f98d9SAlexei Avshalom Lazar int hex_byte(const char *str); 115708cf231dSJouni Malinen int parse_hexstr(const char *hex, unsigned char *buf, size_t buflen); 115872462ef3Spriyadharshini gowthaman int parse_mac_address(struct sigma_dut *dut, const char *arg, 115972462ef3Spriyadharshini gowthaman unsigned char *addr); 1160093569ffSAlexei Avshalom Lazar int is_60g_sigma_dut(struct sigma_dut *dut); 1161093569ffSAlexei Avshalom Lazar unsigned int channel_to_freq(struct sigma_dut *dut, unsigned int channel); 11627192dc42SRakesh Sunki unsigned int freq_to_channel(unsigned int freq); 1163525965bbSPeng Xu int is_ipv6_addr(const char *str); 11648f8e74b5SRakesh Sunki void convert_mac_addr_to_ipv6_lladdr(u8 *mac_addr, char *ipv6_buf, 11658f8e74b5SRakesh Sunki size_t buf_len); 11668863ec7cSPeng Xu size_t convert_mac_addr_to_ipv6_linklocal(const u8 *mac_addr, u8 *ipv6); 1167cd4e3c3eSJouni Malinen 1168769731a2SPeng Xu #ifndef ANDROID 1169769731a2SPeng Xu size_t strlcpy(char *dest, const char *src, size_t siz); 1170769731a2SPeng Xu size_t strlcat(char *dst, const char *str, size_t size); 1171769731a2SPeng Xu #endif /* ANDROID */ 11721bde7947SAnkita Bajaj void hex_dump(struct sigma_dut *dut, u8 *data, size_t len); 11730dae51c5SAlexei Avshalom Lazar int get_wps_pin_from_mac(struct sigma_dut *dut, const char *macaddr, 11740dae51c5SAlexei Avshalom Lazar char *pin, size_t len); 11756427969bSAlexei Avshalom Lazar void str_remove_chars(char *str, char ch); 1176769731a2SPeng Xu 1177744ae8abSAlexei Avshalom Lazar int get_wps_forced_version(struct sigma_dut *dut, const char *str); 1178a37dc16cSAlexei Avshalom Lazar int base64_encode(const char *src, size_t len, char *out, size_t out_len); 1179a37dc16cSAlexei Avshalom Lazar int random_get_bytes(char *buf, size_t len); 11803c740ab7SJouni Malinen int get_enable_disable(const char *val); 118154b78cfdSVinita Maloo int wcn_driver_cmd(const char *ifname, char *buf); 1182769731a2SPeng Xu 1183cd4e3c3eSJouni Malinen /* uapsd_stream.c */ 1184cd4e3c3eSJouni Malinen void receive_uapsd(struct sigma_stream *s); 118579594049SPradeep Reddy POTTETI void send_uapsd_console(struct sigma_stream *s); 1186cd4e3c3eSJouni Malinen 1187cd4e3c3eSJouni Malinen /* nan.c */ 1188cd4e3c3eSJouni Malinen int nan_preset_testparameters(struct sigma_dut *dut, struct sigma_conn *conn, 1189cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1190cd4e3c3eSJouni Malinen int nan_cmd_sta_get_parameter(struct sigma_dut *dut, struct sigma_conn *conn, 1191cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1192cd4e3c3eSJouni Malinen int nan_cmd_sta_exec_action(struct sigma_dut *dut, struct sigma_conn *conn, 1193cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1194cd4e3c3eSJouni Malinen int nan_cmd_sta_get_events(struct sigma_dut *dut, struct sigma_conn *conn, 1195cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1196cd4e3c3eSJouni Malinen int nan_cmd_sta_transmit_followup(struct sigma_dut *dut, 1197cd4e3c3eSJouni Malinen struct sigma_conn *conn, 1198cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1199cd4e3c3eSJouni Malinen void nan_cmd_sta_reset_default(struct sigma_dut *dut, struct sigma_conn *conn, 1200cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1201cd4e3c3eSJouni Malinen int nan_cmd_sta_preset_testparameters(struct sigma_dut *dut, 1202cd4e3c3eSJouni Malinen struct sigma_conn *conn, 1203cd4e3c3eSJouni Malinen struct sigma_cmd *cmd); 1204cd4e3c3eSJouni Malinen 1205d66913acSpriyadharshini gowthaman /* ftm.c */ 1206d66913acSpriyadharshini gowthaman int loc_cmd_sta_exec_action(struct sigma_dut *dut, struct sigma_conn *conn, 1207d66913acSpriyadharshini gowthaman struct sigma_cmd *cmd); 1208d66913acSpriyadharshini gowthaman int loc_cmd_sta_send_frame(struct sigma_dut *dut, struct sigma_conn *conn, 1209d66913acSpriyadharshini gowthaman struct sigma_cmd *cmd); 1210d66913acSpriyadharshini gowthaman int loc_cmd_sta_preset_testparameters(struct sigma_dut *dut, 1211d66913acSpriyadharshini gowthaman struct sigma_conn *conn, 1212d66913acSpriyadharshini gowthaman struct sigma_cmd *cmd); 12133b9fdd38SVinay Gannevaram int lowi_cmd_sta_reset_default(struct sigma_dut *dut, struct sigma_conn *conn, 12143b9fdd38SVinay Gannevaram struct sigma_cmd *cmd); 1215d66913acSpriyadharshini gowthaman 1216d86e5828SJouni Malinen /* dpp.c */ 121789cf6d64SJouni Malinen enum sigma_cmd_result dpp_dev_exec_action(struct sigma_dut *dut, 121889cf6d64SJouni Malinen struct sigma_conn *conn, 1219d86e5828SJouni Malinen struct sigma_cmd *cmd); 1220d86e5828SJouni Malinen 12211bde7947SAnkita Bajaj /* dhcp.c */ 12221bde7947SAnkita Bajaj void process_fils_hlp(struct sigma_dut *dut); 12231bde7947SAnkita Bajaj void hlp_thread_cleanup(struct sigma_dut *dut); 1224d86e5828SJouni Malinen 1225291d97daSPeng Xu #ifdef NL80211_SUPPORT 1226291d97daSPeng Xu struct nl80211_ctx * nl80211_init(struct sigma_dut *dut); 1227291d97daSPeng Xu void nl80211_deinit(struct sigma_dut *dut, struct nl80211_ctx *ctx); 1228291d97daSPeng Xu struct nl_msg * nl80211_drv_msg(struct sigma_dut *dut, struct nl80211_ctx *ctx, 1229291d97daSPeng Xu int ifindex, int flags, 1230291d97daSPeng Xu uint8_t cmd); 1231291d97daSPeng Xu int send_and_recv_msgs(struct sigma_dut *dut, struct nl80211_ctx *ctx, 1232291d97daSPeng Xu struct nl_msg *nlmsg, 1233291d97daSPeng Xu int (*valid_handler)(struct nl_msg *, void *), 1234291d97daSPeng Xu void *valid_data); 1235050b85a6SVeerendranath Jakkam int wcn_wifi_test_config_set_flag(struct sigma_dut *dut, const char *intf, 1236050b85a6SVeerendranath Jakkam int attr_id); 1237050b85a6SVeerendranath Jakkam int wcn_wifi_test_config_set_u8(struct sigma_dut *dut, const char *intf, 1238050b85a6SVeerendranath Jakkam int attr_id, uint8_t val); 1239050b85a6SVeerendranath Jakkam int wcn_wifi_test_config_set_u16(struct sigma_dut *dut, const char *intf, 1240050b85a6SVeerendranath Jakkam int attr_id, uint16_t val); 1241291d97daSPeng Xu #endif /* NL80211_SUPPORT */ 1242291d97daSPeng Xu 1243a2df7db5SJouni Malinen void traffic_register_cmds(void); 1244a2df7db5SJouni Malinen void traffic_agent_register_cmds(void); 1245a2df7db5SJouni Malinen void powerswitch_register_cmds(void); 1246a2df7db5SJouni Malinen void atheros_register_cmds(void); 1247a2df7db5SJouni Malinen void dev_register_cmds(void); 1248a2df7db5SJouni Malinen void sniffer_register_cmds(void); 1249a2df7db5SJouni Malinen void server_register_cmds(void); 1250a2df7db5SJouni Malinen void miracast_register_cmds(void); 1251176181c5SVeerendranath Jakkam int set_ipv6_addr(struct sigma_dut *dut, const char *ip, const char *mask, 1252176181c5SVeerendranath Jakkam const char *ifname); 1253a2df7db5SJouni Malinen 1254cd4e3c3eSJouni Malinen #endif /* SIGMA_DUT_H */ 1255