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
14struct	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
42struct	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
56struct 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
66struct	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
88struct	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
101struct 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
112struct	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
140struct	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
153struct 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
163extern void send_sdp_stream();
164extern void send_sdp_rr();
165
166extern void recv_sdp_stream();
167extern void recv_sdp_rr();
168
169extern void loc_cpu_rate();
170extern void rem_cpu_rate();
171