/* Copyright (C) 1993, Hewlett-Packard Company */ /* This file contains the test-specific definitions for netperf's */ /* DLPI tests */ struct dlpi_co_stream_request_struct { int recv_win_size; int send_win_size; int receive_size; /* how many bytes do we want to */ /* receive at one time? */ int recv_alignment; /* what is the alignment of the */ /* receive buffer? */ int recv_offset; /* and at what offset from that */ /* alignment? */ int measure_cpu; /* does the client want server cpu */ /* utilization measured? */ float cpu_rate; /* do we know how fast the cpu is */ /* already? */ int test_length; /* how long is the test? */ int so_rcvavoid; /* do we want the remote to avoid */ /* copies on receives? */ int so_sndavoid; /* do we want the remote to avoid send copies? */ int dirty_count; /* how many integers in the receive buffer */ /* should be made dirty before calling recv? */ int clean_count; /* how many integers should be read from the */ /* recv buffer before calling recv? */ int sap; /* */ int ppa; /* which device do we wish to use? */ int dev_name_len; /* the length of the device name string. this */ /* is used to put it into the proper order on */ /* @#$% byte-swapped boxes... */ char dlpi_device[32]; /* the path to the dlpi device */ }; struct dlpi_co_stream_response_struct { int recv_win_size; /* how big does the client want it */ int send_win_size; int receive_size; int measure_cpu; /* does the client want server cpu */ int test_length; /* how long is the test? */ int data_port_number; /* connect to me here */ float cpu_rate; /* could we measure */ int so_rcvavoid; /* could the remote avoid receive copies? */ int so_sndavoid; /* could the remote avoid send copies? */ int station_addr_len; int station_addr[1];/* what is the station address for the */ /* specified ppa? */ }; struct dlpi_co_stream_results_struct { int bytes_received; /* ignored initially */ int recv_calls; /* ignored initially */ float elapsed_time; /* how long the test ran */ float cpu_util; /* -1 if not measured */ float serv_dem; /* -1 if not measured */ int cpu_method; /* how was CPU util measured? */ int num_cpus; /* how many CPUs were there? */ }; struct dlpi_co_rr_request_struct { int recv_win_size; /* how big does the client want it */ int send_win_size; int recv_alignment; int recv_offset; int send_alignment; int send_offset; int request_size; int response_size; int measure_cpu; /* does the client want server cpu */ float cpu_rate; /* do we know how fast the cpu is? */ int test_length; /* how long is the test? */ int so_rcvavoid; /* do we want the remote to avoid receive copies? */ int so_sndavoid; /* do we want the remote to avoid send copies? */ int ppa; /* which device do we wish to use? */ int sap; /* which sap should be used? */ int dev_name_len; /* the length of the device name string. this */ /* is used to put it into the proper order on */ /* @#$% byte-swapped boxes... */ char dlpi_device[32]; /* the path to the dlpi device */ }; struct dlpi_co_rr_response_struct { int recv_win_size; /* how big does the client want it */ int send_win_size; int measure_cpu; /* does the client want server cpu */ int test_length; /* how long is the test? */ int data_port_number; /* connect to me here */ float cpu_rate; /* could we measure */ int so_rcvavoid; /* could the remote avoid receive copies? */ int so_sndavoid; /* could the remote avoid send copies? */ int station_addr_len; /* the length of the station address */ int station_addr[1]; /* the remote's station address */ }; struct dlpi_co_rr_results_struct { int bytes_received; /* ignored initially */ int recv_calls; /* ignored initially */ int trans_received; /* not ignored */ float elapsed_time; /* how long the test ran */ float cpu_util; /* -1 if not measured */ float serv_dem; /* -1 if not measured */ int cpu_method; /* how was CPU util measured? */ int num_cpus; /* how many CPUs were there? */ }; struct dlpi_cl_stream_request_struct { int recv_win_size; int message_size; int recv_alignment; int recv_offset; int checksum_off; int measure_cpu; float cpu_rate; int test_length; int so_rcvavoid; /* do we want the remote to avoid receive copies? */ int so_sndavoid; /* do we want the remote to avoid send copies? */ int ppa; /* which device do we wish to use? */ int sap; int dev_name_len; /* the length of the device name string. this */ /* is used to put it into the proper order on */ /* @#$% byte-swapped boxes... */ char dlpi_device[32]; /* the path to the dlpi device */ }; struct dlpi_cl_stream_response_struct { int recv_win_size; int send_win_size; int measure_cpu; int test_length; int data_port_number; float cpu_rate; int so_rcvavoid; /* could the remote avoid receive copies? */ int so_sndavoid; /* could the remote avoid send copies? */ int station_addr_len; /* the length of the station address */ int station_addr[1]; /* the remote's station address */ }; struct dlpi_cl_stream_results_struct { int messages_recvd; int bytes_received; float elapsed_time; float cpu_util; int num_cpus; }; struct dlpi_cl_rr_request_struct { int recv_win_size; /* how big does the client want it */ int send_win_size; int recv_alignment; int recv_offset; int send_alignment; int send_offset; int request_size; int response_size; int no_delay; int measure_cpu; /* does the client want server cpu */ float cpu_rate; /* do we know how fast the cpu is? */ int test_length; /* how long is the test? */ int so_rcvavoid; /* do we want the remote to avoid receive */ /* copies? */ int so_sndavoid; /* do we want the remote to avoid send copies? */ int ppa; /* which device do we wish to use? */ int sap; /* which sap? */ int dev_name_len; /* the length of the device name string. this */ /* is used to put it into the proper order on */ /* @#$% byte-swapped boxes... */ char dlpi_device[32]; /* the path to the dlpi device */ }; struct dlpi_cl_rr_response_struct { int recv_win_size; /* how big does the client want it */ int send_win_size; int no_delay; int measure_cpu; /* does the client want server cpu */ int test_length; /* how long is the test? */ int data_port_number; /* connect to me here */ float cpu_rate; /* could we measure */ int so_rcvavoid; /* could the remote avoid receive copies? */ int so_sndavoid; /* could the remote avoid send copies? */ int station_addr_len; /* the length of the station address */ int station_addr[1]; /* the remote's station address */ }; struct dlpi_cl_rr_results_struct { int bytes_received; /* ignored initially */ int recv_calls; /* ignored initially */ int trans_received; /* not ignored */ float elapsed_time; /* how long the test ran */ float cpu_util; /* -1 if not measured */ float serv_dem; /* -1 if not measured */ int cpu_method; /* how was CPU util measured? */ int num_cpus; /* how many CPUs were there? */ }; extern void send_dlpi_co_stream(); extern int recv_dlpi_co_stream(); extern int send_dlpi_co_rr(char remote_host[]); extern void send_dlpi_cl_stream(char remote_host[]); extern int recv_dlpi_cl_stream(); extern int send_dlpi_cl_rr(char remote_host[]); extern int recv_dlpi_cl_rr(); extern int recv_dlpi_co_rr(); extern void scan_dlpi_args(int argc, char *argv[]);