Home | History | Annotate | Download | only in src
      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