1 /*
2         Copyright (C) 1993, Hewlett-Packard Company
3 */
4 
5  /* This file contains the test-specific definitions for netperf's */
6  /* DLPI tests */
7 
8 
9 struct	dlpi_co_stream_request_struct {
10   int	recv_win_size;
11   int	send_win_size;
12   int	receive_size;   /* how many bytes do we want to */
13                         /* receive at one time? */
14   int	recv_alignment; /* what is the alignment of the */
15                         /* receive buffer? */
16   int	recv_offset;    /* and at what offset from that */
17                         /* alignment? */
18   int	measure_cpu;	/* does the client want server cpu */
19                         /* utilization measured? */
20   float	cpu_rate;	/* do we know how fast the cpu is */
21                         /* already? */
22   int	test_length;	/* how long is the test?		*/
23   int	so_rcvavoid;    /* do we want the remote to avoid */
24                         /* copies on receives? */
25   int	so_sndavoid;    /* do we want the remote to avoid send copies? */
26   int   dirty_count;    /* how many integers in the receive buffer */
27 			/* should be made dirty before calling recv? */
28   int   clean_count;    /* how many integers should be read from the */
29 			/* recv buffer before calling recv? */
30   int   sap;            /* */
31   int   ppa;            /* which device do we wish to use? */
32   int   dev_name_len;   /* the length of the device name string. this */
33 			/* is used to put it into the proper order on */
34 			/* @#$% byte-swapped boxes... */
35   char  dlpi_device[32]; /* the path to the dlpi device */
36 };
37 
38 struct	dlpi_co_stream_response_struct {
39   int	recv_win_size;	/* how big does the client want it	*/
40   int	send_win_size;
41   int	receive_size;
42   int	measure_cpu;	/* does the client want server cpu	*/
43   int	test_length;	/* how long is the test?		*/
44   int	data_port_number;	/* connect to me here	*/
45   float	cpu_rate;		/* could we measure	*/
46   int	so_rcvavoid;	/* could the remote avoid receive copies? */
47   int	so_sndavoid;	/* could the remote avoid send copies? */
48   int   station_addr_len;
49   int   station_addr[1];/* what is the station address for the */
50 			/* specified ppa? */
51 };
52 
53 struct dlpi_co_stream_results_struct {
54   int	bytes_received;	/* ignored initially */
55   int	recv_calls;	/* ignored initially */
56   float	elapsed_time;	/* how long the test ran */
57   float	cpu_util;	/* -1 if not measured */
58   float	serv_dem;	/* -1 if not measured */
59   int   cpu_method;     /* how was CPU util measured? */
60   int   num_cpus;       /* how many CPUs were there? */
61 };
62 
63 struct	dlpi_co_rr_request_struct {
64   int	recv_win_size;	/* how big does the client want it	*/
65   int	send_win_size;
66   int	recv_alignment;
67   int	recv_offset;
68   int	send_alignment;
69   int	send_offset;
70   int	request_size;
71   int	response_size;
72   int	measure_cpu;	/* does the client want server cpu	*/
73   float	cpu_rate;	/* do we know how fast the cpu is?	*/
74   int	test_length;	/* how long is the test?		*/
75   int	so_rcvavoid;    /* do we want the remote to avoid receive copies? */
76   int	so_sndavoid;    /* do we want the remote to avoid send copies? */
77   int   ppa;            /* which device do we wish to use? */
78   int   sap;            /* which sap should be used? */
79   int   dev_name_len;   /* the length of the device name string. this */
80 			/* is used to put it into the proper order on */
81 			/* @#$% byte-swapped boxes... */
82   char  dlpi_device[32]; /* the path to the dlpi device */
83 };
84 
85 struct	dlpi_co_rr_response_struct {
86   int	recv_win_size;	/* how big does the client want it	*/
87   int	send_win_size;
88   int	measure_cpu;	/* does the client want server cpu	*/
89   int	test_length;	/* how long is the test?		*/
90   int	data_port_number;	/* connect to me here	*/
91   float	cpu_rate;		/* could we measure	*/
92   int	so_rcvavoid;	/* could the remote avoid receive copies? */
93   int	so_sndavoid;	/* could the remote avoid send copies? */
94   int   station_addr_len;    /* the length of the station address */
95   int   station_addr[1];     /* the remote's station address */
96 };
97 
98 struct dlpi_co_rr_results_struct {
99   int	bytes_received;	/* ignored initially */
100   int	recv_calls;	/* ignored initially */
101   int	trans_received;	/* not ignored  */
102   float	elapsed_time;	/* how long the test ran */
103   float	cpu_util;	/* -1 if not measured */
104   float	serv_dem;	/* -1 if not measured */
105   int   cpu_method;     /* how was CPU util measured? */
106   int   num_cpus;       /* how many CPUs were there? */
107 };
108 
109 struct	dlpi_cl_stream_request_struct {
110   int	recv_win_size;
111   int	message_size;
112   int	recv_alignment;
113   int	recv_offset;
114   int	checksum_off;
115   int	measure_cpu;
116   float	cpu_rate;
117   int	test_length;
118   int	so_rcvavoid;    /* do we want the remote to avoid receive copies? */
119   int	so_sndavoid;    /* do we want the remote to avoid send copies? */
120   int   ppa;            /* which device do we wish to use? */
121   int   sap;
122   int   dev_name_len;   /* the length of the device name string. this */
123 			/* is used to put it into the proper order on */
124 			/* @#$% byte-swapped boxes... */
125   char  dlpi_device[32]; /* the path to the dlpi device */
126 };
127 
128 struct	dlpi_cl_stream_response_struct {
129   int	recv_win_size;
130   int	send_win_size;
131   int	measure_cpu;
132   int	test_length;
133   int	data_port_number;
134   float	cpu_rate;
135   int	so_rcvavoid;	/* could the remote avoid receive copies? */
136   int	so_sndavoid;	/* could the remote avoid send copies? */
137   int   station_addr_len;    /* the length of the station address */
138   int   station_addr[1];     /* the remote's station address */
139 };
140 
141 struct	dlpi_cl_stream_results_struct {
142   int	messages_recvd;
143   int	bytes_received;
144   float	elapsed_time;
145   float	cpu_util;
146   int   num_cpus;
147 };
148 
149 
150 struct	dlpi_cl_rr_request_struct {
151   int	recv_win_size;	/* how big does the client want it	*/
152   int	send_win_size;
153   int	recv_alignment;
154   int	recv_offset;
155   int	send_alignment;
156   int	send_offset;
157   int	request_size;
158   int	response_size;
159   int	no_delay;
160   int	measure_cpu;	/* does the client want server cpu	*/
161   float	cpu_rate;	/* do we know how fast the cpu is?	*/
162   int	test_length;	/* how long is the test?		*/
163   int	so_rcvavoid;    /* do we want the remote to avoid receive */
164 			/* copies? */
165   int	so_sndavoid;    /* do we want the remote to avoid send copies? */
166   int   ppa;            /* which device do we wish to use? */
167   int   sap;            /* which sap? */
168   int   dev_name_len;   /* the length of the device name string. this */
169 			/* is used to put it into the proper order on */
170 			/* @#$% byte-swapped boxes... */
171   char  dlpi_device[32]; /* the path to the dlpi device */
172 };
173 
174 struct	dlpi_cl_rr_response_struct {
175   int	recv_win_size;	/* how big does the client want it	*/
176   int	send_win_size;
177   int	no_delay;
178   int	measure_cpu;	/* does the client want server cpu	*/
179   int	test_length;	/* how long is the test?		*/
180   int	data_port_number;	/* connect to me here	*/
181   float	cpu_rate;		/* could we measure	*/
182   int	so_rcvavoid;	/* could the remote avoid receive copies? */
183   int	so_sndavoid;	/* could the remote avoid send copies? */
184   int   station_addr_len;    /* the length of the station address */
185   int   station_addr[1];     /* the remote's station address */
186 };
187 
188 struct dlpi_cl_rr_results_struct {
189   int	bytes_received;	/* ignored initially */
190   int	recv_calls;	/* ignored initially */
191   int	trans_received;	/* not ignored  */
192   float	elapsed_time;	/* how long the test ran */
193   float	cpu_util;	/* -1 if not measured */
194   float	serv_dem;	/* -1 if not measured */
195   int   cpu_method;     /* how was CPU util measured? */
196   int   num_cpus;       /* how many CPUs were there? */
197 };
198 
199 extern void send_dlpi_co_stream();
200 
201 extern int recv_dlpi_co_stream();
202 
203 extern int send_dlpi_co_rr(char remote_host[]);
204 
205 extern void send_dlpi_cl_stream(char remote_host[]);
206 
207 extern int recv_dlpi_cl_stream();
208 
209 extern int send_dlpi_cl_rr(char remote_host[]);
210 
211 extern int recv_dlpi_cl_rr();
212 
213 extern int recv_dlpi_co_rr();
214 
215 extern void scan_dlpi_args(int argc, char *argv[]);
216