Home | History | Annotate | Download | only in netperf
      1 /*
      2         Copyright (C) 2007 Hewlett-Packard Company
      3 */
      4 
      5  /* This file contains the test-specific definitions for netperf's SDP */
      6  /* sockets tests */
      7 
      8 /* one of these days, this should not be required */
      9 #ifndef AF_INET_SDP
     10 #define AF_INET_SDP 27
     11 #define PF_INET_SDP AF_INET_SDP
     12 #endif
     13 
     14 struct	sdp_stream_request_struct {
     15   int	send_buf_size;
     16   int	recv_buf_size;	/* how big does the client want it - the */
     17 			/* receive socket buffer that is */
     18   int	receive_size;   /* how many bytes do we want to receive at one */
     19 			/* time? */
     20   int	recv_alignment; /* what is the alignment of the receive */
     21 			/* buffer? */
     22   int	recv_offset;    /* and at what offset from that alignment? */
     23   int	no_delay;       /* do we disable the nagle algorithm for send */
     24 			/* coalescing? */
     25   int	measure_cpu;	/* does the client want server cpu utilization */
     26 			/* measured? */
     27   float	cpu_rate;	/* do we know how fast the cpu is already? */
     28   int	test_length;	/* how long is the test?		*/
     29   int	so_rcvavoid;    /* do we want the remote to avoid copies on */
     30 			/* receives? */
     31   int	so_sndavoid;    /* do we want the remote to avoid send copies? */
     32   int   dirty_count;    /* how many integers in the receive buffer */
     33 			/* should be made dirty before calling recv? */
     34   int   clean_count;    /* how many integers should be read from the */
     35 			/* recv buffer before calling recv? */
     36   int   port;		/* the to port to which recv side should bind
     37 			   to allow netperf to run through firewalls */
     38   int   ipfamily;	/* address family of ipaddress */
     39   int   non_blocking;   /* run the test in non-blocking mode */
     40 };
     41 
     42 struct	sdp_stream_response_struct {
     43   int	recv_buf_size;	/* how big does the client want it	*/
     44   int	receive_size;
     45   int	no_delay;
     46   int	measure_cpu;	/* does the client want server cpu	*/
     47   int	test_length;	/* how long is the test?		*/
     48   int	send_buf_size;
     49   int	data_port_number;	/* connect to me here	*/
     50   float	cpu_rate;		/* could we measure	*/
     51   int	so_rcvavoid;	/* could the remote avoid receive copies? */
     52   int	so_sndavoid;	/* could the remote avoid send copies? */
     53   int   non_blocking;   /* run the test in non-blocking mode */
     54 };
     55 
     56 struct sdp_stream_results_struct {
     57   double         bytes_received;
     58   unsigned int	 recv_calls;
     59   float	         elapsed_time;	/* how long the test ran */
     60   float	         cpu_util;	/* -1 if not measured */
     61   float	         serv_dem;	/* -1 if not measured */
     62   int            cpu_method;    /* how was cpu util measured? */
     63   int            num_cpus;      /* how many CPUs had the remote? */
     64 };
     65 
     66 struct	sdp_rr_request_struct {
     67   int	recv_buf_size;	/* how big does the client want it	*/
     68   int	send_buf_size;
     69   int	recv_alignment;
     70   int	recv_offset;
     71   int	send_alignment;
     72   int	send_offset;
     73   int	request_size;
     74   int	response_size;
     75   int	no_delay;
     76   int	measure_cpu;	/* does the client want server cpu	*/
     77   float	cpu_rate;	/* do we know how fast the cpu is?	*/
     78   int	test_length;	/* how long is the test?		*/
     79   int	so_rcvavoid;    /* do we want the remote to avoid receive */
     80 			/* copies? */
     81   int	so_sndavoid;    /* do we want the remote to avoid send copies? */
     82   int   port;		/* the to port to which recv side should bind
     83 			   to allow netperf to run through firewalls */
     84   int   ipfamily;	/* address family of ipaddress */
     85   int   non_blocking;   /* run the test in non-blocking mode */
     86 };
     87 
     88 struct	sdp_rr_response_struct {
     89   int	recv_buf_size;	/* how big does the client want it	*/
     90   int	no_delay;
     91   int	measure_cpu;	/* does the client want server cpu	*/
     92   int	test_length;	/* how long is the test?		*/
     93   int	send_buf_size;
     94   int	data_port_number;	/* connect to me here	*/
     95   float	cpu_rate;		/* could we measure	*/
     96   int	so_rcvavoid;	/* could the remote avoid receive copies? */
     97   int	so_sndavoid;	/* could the remote avoid send copies? */
     98   int   non_blocking;   /* run the test in non-blocking mode */
     99 };
    100 
    101 struct sdp_rr_results_struct {
    102   unsigned int  bytes_received;	/* ignored initially */
    103   unsigned int	recv_calls;	/* ignored initially */
    104   unsigned int	trans_received;	/* not ignored  */
    105   float	        elapsed_time;	/* how long the test ran */
    106   float	        cpu_util;	/* -1 if not measured */
    107   float	        serv_dem;	/* -1 if not measured */
    108   int           cpu_method;    /* how was cpu util measured? */
    109   int           num_cpus;      /* how many CPUs had the remote? */
    110 };
    111 
    112 struct	sdp_maerts_request_struct {
    113   int	send_buf_size;
    114   int	recv_buf_size;	/* how big does the client want it - the */
    115 			/* receive socket buffer that is */
    116   int	send_size;      /* how many bytes do we want netserver to send
    117 			   at one time? */
    118   int	send_alignment; /* what is the alignment of the send */
    119 			/* buffer? */
    120   int	send_offset;    /* and at what offset from that alignment? */
    121   int	no_delay;       /* do we disable the nagle algorithm for send */
    122 			/* coalescing? */
    123   int	measure_cpu;	/* does the client want server cpu utilization */
    124 			/* measured? */
    125   float	cpu_rate;	/* do we know how fast the cpu is already? */
    126   int	test_length;	/* how long is the test?		*/
    127   int	so_rcvavoid;    /* do we want the remote to avoid copies on */
    128 			/* receives? */
    129   int	so_sndavoid;    /* do we want the remote to avoid send copies? */
    130   int   dirty_count;    /* how many integers in the send buffer */
    131 			/* should be made dirty before calling recv? */
    132   int   clean_count;    /* how many integers should be read from the */
    133 			/* recv buffer before calling recv? */
    134   int   port;           /* the port to which the recv side should bind
    135 			   to allow netperf to run through those evil
    136 			   firewall things */
    137   int   ipfamily;
    138 };
    139 
    140 struct	sdp_maerts_response_struct {
    141   int	recv_buf_size;	/* how big does the client want it	*/
    142   int	send_size;
    143   int	no_delay;
    144   int	measure_cpu;	/* does the client want server cpu	*/
    145   int	test_length;	/* how long is the test?		*/
    146   int	send_buf_size;
    147   int	data_port_number;	/* connect to me here	*/
    148   float	cpu_rate;		/* could we measure	*/
    149   int	so_rcvavoid;	/* could the remote avoid receive copies? */
    150   int	so_sndavoid;	/* could the remote avoid send copies? */
    151 };
    152 
    153 struct sdp_maerts_results_struct {
    154   double         bytes_sent;
    155   unsigned int	 send_calls;
    156   float	         elapsed_time;	/* how long the test ran */
    157   float	         cpu_util;	/* -1 if not measured */
    158   float	         serv_dem;	/* -1 if not measured */
    159   int            cpu_method;    /* how was cpu util measured? */
    160   int            num_cpus;      /* how many CPUs had the remote? */
    161 };
    162 
    163 extern void send_sdp_stream();
    164 extern void send_sdp_rr();
    165 
    166 extern void recv_sdp_stream();
    167 extern void recv_sdp_rr();
    168 
    169 extern void loc_cpu_rate();
    170 extern void rem_cpu_rate();
    171