1
0
Fork 0
mirror of https://github.com/hermitcore/libhermit.git synced 2025-03-23 00:00:05 +01:00
libhermit/usr/benchmarks/ib/perftest_parameters.h
2018-01-31 10:22:52 +01:00

762 lines
21 KiB
C
Executable file

/*
* Copyright (c) 2009 Mellanox Technologies Ltd. All rights reserved.
*
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* OpenIB.org BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* Author: Ido Shamay <idos@dev.mellanox.co.il>
*
* Description :
*
* This API defines structs, formats and enums for all perftest benchmarks.
* It includes parameters parser, and a report generator.
*
* Methods :
*
* link_layer_str - Return a String representation of the link type.
* parser - Setting default test parameters and parsing the user choices.
* check_link - Configures test MTU,inline and link layer of the test.
* check_link_and_mtu - Configures test MTU,inline and link layer of the test.
* print_report_bw - Calculate the peak and average throughput of the BW test.
* print_full_bw_report - Print the peak and average throughput of the BW test.
* print_report_lat - Print the min/max/median latency samples taken from a latency test.
* print_report_lat_duration - Prints only the avergae latency for samples taken from
* a latency test with Duration..
* set_mtu - set MTU from the port or user.
* set_eth_mtu - set MTU for Raw Ethernet tests.
*/
#ifndef PERFTEST_PARAMETERS_H
#define PERFTEST_PARAMETERS_H
#include <hermit/ibv.h>
#include <hermit/verbs.h>
#include <unistd.h>
#include <malloc.h>
#include <stddef.h>
#include <netinet/in.h>
#include <sys/socket.h>
// #include <endian.h>
#include "get_clock.h"
// #ifdef HAVE_CONFIG_H
// #include <config.h>
// #endif
/* ------------------------------------------------------------------- */
/* Config TODO */
// #define HAVE_VERBS_EXP
// #define HAVE_RAW_ETH_EXP
// #define HAVE_RAW_ETH_REG
// #define HAVE_XRCD
#define HAVE_ENDIAN
// #define HAVE_SCIF
// #define HAVE_MASKED_ATOMICS
// #define HAVE_RSS_EXP
// #define HAVE_DC
// #define HAVE_ACCL_VERBS
#define HAVE_IPV6
#define HAVE_IPV4_EXT
#define HAVE_SNIFFER
// #define HAVE_SNIFFER_EXP
#define HAVE_EX
#define HAVE_EX_ODP
// #define HAVE_EXP_ODP
// #define HAVE_CUDA
// #define HAVE_SCATTER_FCS
// #define HAVE_GID_ATTR
// #define HAVE_PACKET_PACING_EXP
#define HAVE_PACKET_PACING
// #define HAVE_OOO_ATTR
// #define HAVE_EXP_OOO_ATTR
#define VERSION "1"
/* ------------------------------------------------------------------- */
/* Connection types available. */
#define RC (0)
#define UC (1)
#define UD (2)
#define RawEth (3)
#define XRC (4)
#define DC (5)
/* Genral control definitions */
#define OFF (0)
#define ON (1)
#define SUCCESS (0)
#define FAILURE (1)
#define VERSION_EXIT (10)
#define HELP_EXIT (11)
#define MTU_FIX (7)
// #define MAX_SIZE_EXP (24)
// #define MAX_SIZE_EXP (23)
// #define MAX_SIZE_EXP (22)
#define MAX_SIZE_EXP (21)
// #define MAX_SIZE_EXP (20)
// #define MAX_SIZE_EXP (19)
// #define MAX_SIZE_EXP (18)
#define MAX_SIZE (1UL << MAX_SIZE_EXP)
#define LINK_FAILURE (-1)
#define LINK_UNSPEC (-2)
#define MAX_OUT_READ_HERMON (16)
#define MAX_OUT_READ (4)
#define UD_ADDITION (40)
#define RAWETH_ADDITION (18)
#define HW_CRC_ADDITION (4)
/* Default Values of perftest parameters */
#define DEF_PORT (18515)
#define DEF_IB_PORT (1)
#define DEF_IB_PORT2 (2)
#define DEF_SIZE_BW (65536)
#define DEF_SIZE_LAT (2)
#define DEF_ITERS (1000)
#define DEF_ITERS_WB (5000)
#define DEF_TX_BW (128)
#define DEF_TX_LAT (1)
#define DEF_QP_TIME (14)
#define DEF_SL (0)
#define DEF_GID_INDEX (-1)
#define DEF_NUM_QPS (1)
#define DEF_RX_RDMA (1)
#define DEF_RX_SEND (512)
#define DEF_CQ_MOD (100)
#define DEF_SIZE_ATOMIC (8)
#define DEF_QKEY 0x11111111
#define DEF_DURATION (5)
#define DEF_MARGIN (2)
#define DEF_INIT_MARGIN (-1)
#define DEF_INLINE (-1)
#define DEF_TOS (-1)
#define DEF_RETRY_COUNT (7)
#define DEF_CACHE_LINE_SIZE (64)
#define DEF_PAGE_SIZE (4096)
#define DEF_FLOWS (1)
#define RATE_VALUES_COUNT (18)
#define SERVER_NAME "137.226.133.151"
/* Optimal Values for Inline */
#define DEF_INLINE_WRITE (220)
#define DEF_INLINE_SEND_RC_UC (236)
#define DEF_INLINE_SEND_XRC (236)
#define DEF_INLINE_SEND_UD (188)
#define DEF_INLINE_DC (150)
/* Max and Min allowed values for perftest parameters. */
#define MIN_TOS (0)
#define MAX_TOS (255)
#define MIN_IB_PORT (1)
#define MAX_IB_PORT (3)
#define MIN_ITER (5)
#define MAX_ITER (100000000)
#define MIN_TX (1)
#define MAX_TX (15000)
#define MIN_SL (0)
#define MAX_SL (15)
#define MIN_GID_IX (0)
#define MAX_GID_IX (64)
#define MIN_QP_NUM (1)
#define MAX_QP_NUM (16384)
#define MIN_QP_MCAST (1)
#define MAX_QP_MCAST (56)
#define MIN_RX (1)
#define MAX_RX (16384)
#define UC_MAX_RX (16000)
#define MIN_CQ_MOD (1)
#define MAX_CQ_MOD (1024)
#define MAX_INLINE (912)
#define MAX_INLINE_UD (884)
#define MIN_EQ_NUM (0)
#define MAX_EQ_NUM (2048)
/* Raw etherent defines */
#define RAWETH_MIN_MSG_SIZE (64)
#define MIN_MTU_RAW_ETERNET (64)
#define MAX_MTU_RAW_ETERNET (9600)
#define MIN_FS_PORT (5000)
#define MAX_FS_PORT (65536)
#define VLAN_PCP_VARIOUS (8)
#define RESULT_LINE "---------------------------------------------------------------------------------------\n"
#define RESULT_LINE_PER_PORT "-------------------------------------------------------------------------------------------------------------------------------------------------------------------\n"
#define CYCLES "cycles"
#define USEC "usec"
/* The format of the results */
#define RESULT_FMT " #bytes #iterations BW peak[MB/sec] BW average[MB/sec] MsgRate[Mpps]"
#define RESULT_FMT_PER_PORT " #bytes #iterations BW peak[MB/sec] BW average[MB/sec] MsgRate[Mpps] BW Port1[MB/sec] MsgRate Port1[Mpps] BW Port2[MB/sec] MsgRate Port2[Mpps]"
#define RESULT_FMT_G " #bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]"
#define RESULT_FMT_G_PER_PORT " #bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps] BW Port1[Gb/sec] MsgRate Port1[Mpps] BW Port2[Gb/sec] MsgRate Port2[Mpps]"
#define RESULT_FMT_QOS " #bytes #sl #iterations BW peak[MB/sec] BW average[MB/sec] MsgRate[Mpps]"
#define RESULT_FMT_G_QOS " #bytes #sl #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]"
#define RESULT_FMT_LAT " #bytes #iterations t_min[usec] t_max[usec] t_typical[usec] t_avg[usec] t_stdev[usec] 99""%"" percentile[usec] 99.9""%"" percentile[usec] "
#define RESULT_FMT_LAT_DUR " #bytes #iterations t_avg[usec] tps average"
#define RESULT_EXT "\n"
#define RESULT_EXT_CPU_UTIL " CPU_Util[%%]\n"
#define RESULT_FMT_FS_RATE " #flows fs_min_time[usec] fs_max_time[usec] fs_typical_time[usec] fs_avg_time[usec] fps[flow per sec]"
#define RESULT_FMT_FS_RATE_DUR " #flows fs_avg_time[usec] fps[flow per sec]"
/* Result print format */
#define REPORT_FMT " %-7lu %-10lu %-7.2lf %-7.2lf %-7.6lf"
#define REPORT_FMT_EXT " %-7lu %lu %-7.6lf %-7.6lf %-7.6lf"
#define REPORT_FMT_PER_PORT " %-7lu %-10lu %-7.2lf %-7.2lf %-7.6lf %-7.2lf %-7.6lf %-7.2lf %-7.6lf"
#define REPORT_EXT "\n"
#define REPORT_EXT_CPU_UTIL " %-3.2f\n"
#define REPORT_FMT_QOS " %-7lu %d %lu %-7.2lf %-7.2lf %-7.6lf\n"
/* Result print format for latency tests. */
#define REPORT_FMT_LAT " %-7lu %d %-7.2f %-7.2f %-7.2f %-7.2f %-7.2f %-7.2f %-7.2f"
#define REPORT_FMT_LAT_DUR " %-7lu %d %-7.2f %-7.2f"
#define REPORT_FMT_FS_RATE " %d %-7.2f %-7.2f %-7.2f %-7.2f %-7.2f"
#define REPORT_FMT_FS_RATE_DUR " %d %-7.2f %-7.2f"
#define CHECK_VALUE(arg,type,minv,maxv,name) \
{ arg = (type)strtol(optarg, NULL, 0); if ((arg < minv) || (arg > maxv)) \
{ fprintf(stderr," %s should be between %d and %d\n",name,minv,maxv); return 1; }}
/* Macro for allocating. */
#define ALLOCATE(var,type,size) \
{ if((var = (type*)malloc(sizeof(type)*(size))) == NULL) \
{ fprintf(stderr," Cannot Allocate\n"); exit(1);}}
/* This is our string builder */
#define GET_STRING(orig,temp) \
{ ALLOCATE(orig,char,(strlen(temp) + 1)); strcpy(orig,temp); }
#define MTU_SIZE(mtu_ind) (((uint64_t)1 << (MTU_FIX + mtu_ind)))
#define MAX_VERSION 16 /* Reserve 15 bytes for version numbers */
#define GET_ARRAY_SIZE(arr) (sizeof((arr)) / sizeof((arr[0])))
/* The Verb of the benchmark. */
typedef enum { SEND , WRITE, READ, ATOMIC } VerbType;
/* The type of the test */
typedef enum { LAT , BW , LAT_BY_BW, FS_RATE } TestType;
/* The type of the machine ( server or client actually). */
typedef enum { SERVER , CLIENT , UNCHOSEN} MachineType;
/* The type of the machine ( server or client actually). */
typedef enum { LOCAL , REMOTE } PrintDataSide;
/* The atomic test type */
typedef enum {CMP_AND_SWAP, FETCH_AND_ADD} AtomicType;
/* Type of test method. */
typedef enum { ITERATIONS , DURATION } TestMethod;
/* for duration calculation */
typedef enum { START_STATE, SAMPLE_STATE, STOP_SAMPLE_STATE, END_STATE} DurationStates;
/* Report format (Gbit/s VS MB/s) */
enum ctx_report_fmt { GBS, MBS };
/* Test method */
enum ctx_test_method {RUN_REGULAR, RUN_ALL, RUN_INFINITELY};
/* The type of the device */
enum ctx_device {
DEVICE_ERROR = -1,
UNKNOWN = 0,
CONNECTX = 1,
CONNECTX2 = 2,
CONNECTX3 = 3,
CONNECTIB = 4,
LEGACY = 5,
CHELSIO_T4 = 6,
CHELSIO_T5 = 7,
CONNECTX3_PRO = 8,
SKYHAWK = 9,
CONNECTX4 = 10,
CONNECTX4LX = 11,
QLOGIC_E4 = 12,
QLOGIC_AH = 13,
CHELSIO_T6 = 14,
CONNECTX5 = 15,
CONNECTX5EX = 16,
CONNECTX6 = 17,
BLUEFIELD = 18
};
/* Units for rate limiter */
enum rate_limiter_units {MEGA_BYTE_PS, GIGA_BIT_PS, PACKET_PS};
/*Types rate limit*/
enum rate_limiter_types {HW_RATE_LIMIT, SW_RATE_LIMIT, PP_RATE_LIMIT, DISABLE_RATE_LIMIT};
/* Verbosity Levels for test report */
enum verbosity_level {FULL_VERBOSITY=-1, OUTPUT_BW=0, OUTPUT_MR, OUTPUT_LAT };
/*Accelerated verbs */
enum verbs_intf {
NORMAL_INTF,
ACCL_INTF,
};
struct cpu_util_data {
int enable;
long long ustat[2];
long long idle[2];
};
struct check_alive_data {
int current_totrcnt;
int last_totrcnt;
int g_total_iters;
int to_exit;
int is_events;
};
/* gen_eth_header .
* Description :create raw Ethernet header on buffer
*
* Parameters :
* eth_header - Pointer to output
* src_mac - source MAC address of the packet
* dst_mac - destination MAC address of the packet
* eth_type - IP/or size of ptk
*
*
struct ETH_header {
uint8_t dst_mac[6];
uint8_t src_mac[6];
uint16_t eth_type;
}__attribute__((packed));
struct ETH_vlan_header {
uint8_t dst_mac[6];
uint8_t src_mac[6];
uint32_t vlan_header;
uint16_t eth_type;
}__attribute__((packed));*/
struct perftest_parameters {
int port;
char *ib_devname;
char *servername;
uint8_t ib_port;
uint8_t ib_port2;
int mtu; // minimum translation unit
enum ibv_mtu curr_mtu;
uint64_t size; // BW: 65536, LAT: 2
uint64_t dct_key;
int iters;
uint64_t iters_per_port[2];
uint64_t *port_by_qp;
int tx_depth; // <= iters
uint8_t qp_timeout;
uint8_t sl; // service lvl
int gid_index;
int gid_index2;
int use_gid_user;
uint8_t source_mac[6];
uint8_t dest_mac[6];
int is_source_mac;
int is_dest_mac;
uint8_t server_ip6[16];
uint8_t client_ip6[16];
uint8_t local_ip6[16];
uint8_t remote_ip6[16];
uint8_t local_mac[6];
uint8_t remote_mac[6];
uint32_t client_ip;
uint32_t server_ip;
int is_server_ip;
int is_client_ip;
uint32_t local_ip;
uint32_t remote_ip;
int server_port;
int client_port;
int tcp;
int is_server_port;
int is_client_port;
int local_port;
int remote_port;
int is_old_raw_eth_param;
int is_new_raw_eth_param;
uint16_t ethertype;
int is_ethertype;
int cpu_freq_f;
int connection_type;
int num_of_qps;
int use_event;
int eq_num;
int use_eq_num;
int inline_size;
int inline_recv_size;
int out_reads;
int rx_depth;
int duplex;
int noPeak;
int cq_mod;
int spec;
int dualport;
int post_list;
int duration;
int use_srq;
int use_xrc;
int use_rss;
int srq_exists;
int tos;
int margin;
int is_bw_limit_passed;
int is_msgrate_limit_passed;
int is_limit_bw;
int is_limit_msgrate;
float limit_bw;
float limit_msgrate;
uint32_t rem_ud_qpn;
uint32_t rem_ud_qkey;
int8_t link_type;
int8_t link_type2;
MachineType machine;
PrintDataSide side;
VerbType verb;
TestType tst;
AtomicType atomicType;
TestMethod test_type;
DurationStates state;
int sockfd;
char version[MAX_VERSION];
char rem_version[MAX_VERSION];
cycles_t *tposted;
cycles_t *tcompleted;
int use_mcg;
int use_rdma_cm;
int is_reversed;
int work_rdma_cm;
char *user_mgid;
int buff_size;
int pkey_index;
int raw_qos;
int use_cuda;
char *mmap_file;
unsigned long mmap_offset;
/* New test params format pilot. will be used in all flags soon,. */
enum ctx_test_method test_method;
enum ibv_transport_type transport_type;
enum ctx_report_fmt report_fmt;
struct report_options *r_flag ;
int mac_fwd;
int report_both; /* in bidirectional tests, report tx and rx separately */
/* results limits */
float min_bw_limit;
float min_msgRate_limit;
/* Rate Limiter */
char *rate_limit_str;
double rate_limit;
int valid_hw_rate_limit;
int burst_size;
enum rate_limiter_units rate_units;
enum rate_limiter_types rate_limit_type;
int is_rate_limit_type;
enum verbosity_level output;
int cpu_util;
struct cpu_util_data cpu_util_data;
int latency_gap;
int flow_label;
int retry_count;
int dont_xchg_versions;
int use_exp;
int ipv6;
int raw_ipv6;
int report_per_port;
int use_odp;
int use_hugepages;
int use_promiscuous;
int use_sniffer;
int check_alive_exited;
int raw_mcast;
int masked_atomics;
int cycle_buffer;
int cache_line_size;
enum verbs_intf verb_type;
int is_exp_cq;
int is_exp_qp;
int use_res_domain;
int mr_per_qp;
uint16_t dlid;
uint8_t traffic_class;
uint32_t wait_destroy;
int disable_fcs;
int flows;
int flows_burst;
uint32_t reply_every;
int perform_warm_up;
int use_ooo;
int vlan_en;
uint32_t vlan_pcp;
// void (*print_eth_func)(void*);
};
struct report_options {
int unsorted;
int histogram;
int cycles;
};
struct bw_report_data {
unsigned long size;
uint64_t iters;
double bw_peak;
double bw_avg;
double bw_avg_p1;
double bw_avg_p2;
double msgRate_avg;
double msgRate_avg_p1;
double msgRate_avg_p2;
int sl;
};
struct rate_gbps_string {
enum ibv_rate rate_gbps_enum;
char* rate_gbps_str;
};
/*
*Enums taken from verbs.h
*/
static const struct rate_gbps_string RATE_VALUES[RATE_VALUES_COUNT] = {
{IBV_RATE_2_5_GBPS, "2.5"},
{IBV_RATE_5_GBPS, "5"},
{IBV_RATE_10_GBPS, "10"},
{IBV_RATE_14_GBPS, "14"},
{IBV_RATE_20_GBPS, "20"},
{IBV_RATE_25_GBPS, "25"},
{IBV_RATE_30_GBPS, "30"},
{IBV_RATE_40_GBPS, "40"},
{IBV_RATE_56_GBPS, "56"},
{IBV_RATE_60_GBPS, "60"},
{IBV_RATE_80_GBPS, "80"},
{IBV_RATE_100_GBPS, "100"},
{IBV_RATE_112_GBPS, "112"},
{IBV_RATE_120_GBPS, "120"},
{IBV_RATE_168_GBPS, "168"},
{IBV_RATE_200_GBPS, "200"},
{IBV_RATE_300_GBPS, "300"},
{IBV_RATE_MAX, "MAX"}
};
char * duplicate_str(const char * given_str);
/* link_layer_str
*
* Description : Return a String representation of the link type.
*
* link_layer : (According to verbs.h) :
* IBV_LINK_LAYER_UNSPECIFIED.
* IBV_LINK_LAYER_INFINIBAND.
* IBV_LINK_LAYER_ETHERNET.
*
* Return Value :"IB", "Etherent" or "Unknown".
*/
const char *link_layer_str(int8_t link_layer);
/* str_link_layer
*
* Description : Try to parse a string into a verbs link layer type.
*
* link_layer : (According to verbs.h) :
* "IB" -> IBV_LINK_LAYER_INFINIBAND.
* "Ethernet" -> IBV_LINK_LAYER_ETHERNET.
* otherwise -> LINK_FAILURE.
*
* Return Value : IBV_LINK_LAYER or LINK_FAILURE
*/
const int str_link_layer(const char *str);
/* parser
*
* Description : Setting default test parameters and parsing the user choises
*
* Parameters :
*
* user_param - the parameters element.
* argv & argc - from the user prompt.
*
* Return Value : 0 upon success. -1 if it fails.
*/
int parser(struct perftest_parameters *user_param,char *argv[], int argc);
/* check_link_and_mtu
*
* Description : Configures test MTU,inline and link layer of the test.
*
* Parameters :
*
* context - Context of the device.
* user_param - Perftest parameters.
*
* Return Value : SUCCESS, FAILURE.
*/
int check_link(struct ibv_context *context,struct perftest_parameters *user_param);
/* check_link_and_mtu
*
* Description : Configures test MTU,inline and link layer of the test.
*
* Parameters :
*
* context - Context of the device.
* user_param - Perftest parameters.
*
* Return Value : SUCCESS, FAILURE.
*/
int check_link_and_mtu(struct ibv_context *context,struct perftest_parameters *user_param);
/* ctx_print_test_info
*
* Description : Prints all the parameters selected for this run.
*
* Parameters :
*
* user_param - the parameters parameters.
*
*/
void ctx_print_test_info(struct perftest_parameters *user_param);
/* print_report_bw
*
* Description : Calculate the peak and average throughput of the BW test.
* The function will print when not in duplex mode.
*
* Parameters :
*
* user_param - the parameters parameters.
* my_bw_rep - get my bw test report.
*
*/
void print_report_bw (struct perftest_parameters *user_param, struct bw_report_data *my_bw_rep);
/* print_full_bw_report
*
* Description : Print the peak and average throughput of the BW test.
* If rem_bw_rep is not NULL, the function will sum the server and client results.
*
* Parameters :
*
* user_param - the parameters parameters.
* my_bw_rep - my bw test report.
* rem_bw_rep - remote's bw test report.
*
*/
void print_full_bw_report (struct perftest_parameters *user_param, struct bw_report_data *my_bw_rep, struct bw_report_data *rem_bw_rep);
/* print_report_lat
*
* Description : Print the min/max/median latency samples taken from a latency test.
* It also support a unsorted/histogram report of all samples.
*
* Parameters :
*
* user_param - the parameters parameters.
*
*/
void print_report_lat (struct perftest_parameters *user_param);
/* print_report_lat_duration
*
* Description : Prints only the avergae latency for samples taken from a latency test
* With Duration.
*
* Parameters :
*
* user_param - the parameters parameters.
*
*/
void print_report_lat_duration (struct perftest_parameters *user_param);
/* print_report_fs_rate
*
* Description : Prints the Flow steering rate and avarage latency to create flow
*
* Parameters :
*
* user_param - the parameters parameters.
*
*/
void print_report_fs_rate (struct perftest_parameters *user_param);
/* set_mtu
*
* Description : set MTU from the port or user
*
* Parameters :
*
* context - Context of the device.
* ib_port - ib port number that's in use.
* user_mtu - MTU that the user supplied.
*
* Return Value : MTU size
*/
enum ibv_mtu set_mtu(struct ibv_context *context,uint8_t ib_port,int user_mtu);
/* set_eth_mtu
*
* Description : set MTU for Raw Ethernet tests
*
* Parameters :
*
* user_param - the parameters parameters.
*
* Return Value : MTU size
*/
int set_eth_mtu(struct perftest_parameters *user_param);
/******************************************************************************
*
******************************************************************************/
enum ctx_device ib_dev_name(struct ibv_context *context);
#endif /* PERFTEST_RESOURCES_H */