1 1.11 riastrad /* $NetBSD: nfsrtt.h,v 1.11 2024/12/07 02:05:55 riastradh Exp $ */ 2 1.2 cgd 3 1.1 mycroft /* 4 1.1 mycroft * Copyright (c) 1992, 1993 5 1.1 mycroft * The Regents of the University of California. All rights reserved. 6 1.1 mycroft * 7 1.1 mycroft * This code is derived from software contributed to Berkeley by 8 1.1 mycroft * Rick Macklem at The University of Guelph. 9 1.1 mycroft * 10 1.1 mycroft * Redistribution and use in source and binary forms, with or without 11 1.1 mycroft * modification, are permitted provided that the following conditions 12 1.1 mycroft * are met: 13 1.1 mycroft * 1. Redistributions of source code must retain the above copyright 14 1.1 mycroft * notice, this list of conditions and the following disclaimer. 15 1.1 mycroft * 2. Redistributions in binary form must reproduce the above copyright 16 1.1 mycroft * notice, this list of conditions and the following disclaimer in the 17 1.1 mycroft * documentation and/or other materials provided with the distribution. 18 1.7 agc * 3. Neither the name of the University nor the names of its contributors 19 1.1 mycroft * may be used to endorse or promote products derived from this software 20 1.1 mycroft * without specific prior written permission. 21 1.1 mycroft * 22 1.1 mycroft * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23 1.1 mycroft * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24 1.1 mycroft * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25 1.1 mycroft * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26 1.1 mycroft * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27 1.1 mycroft * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28 1.1 mycroft * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29 1.1 mycroft * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 1.1 mycroft * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31 1.1 mycroft * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 1.1 mycroft * SUCH DAMAGE. 33 1.1 mycroft * 34 1.4 fvdl * @(#)nfsrtt.h 8.2 (Berkeley) 3/30/95 35 1.1 mycroft */ 36 1.1 mycroft 37 1.11 riastrad #ifndef _NFS_NFSRTT_H_ 38 1.11 riastrad #define _NFS_NFSRTT_H_ 39 1.11 riastrad 40 1.11 riastrad #include <sys/types.h> 41 1.4 fvdl 42 1.11 riastrad #include <sys/fstypes.h> 43 1.11 riastrad #include <sys/time.h> 44 1.4 fvdl 45 1.1 mycroft /* 46 1.1 mycroft * Definitions for performance monitor. 47 1.1 mycroft * The client and server logging are turned on by setting the global 48 1.1 mycroft * constant "nfsrtton" to 1. 49 1.1 mycroft */ 50 1.1 mycroft #define NFSRTTLOGSIZ 128 51 1.1 mycroft 52 1.1 mycroft /* 53 1.1 mycroft * Circular log of client side rpc activity. Each log entry is for one 54 1.1 mycroft * rpc filled in upon completion. (ie. in order of completion) 55 1.1 mycroft * The "pos" is the table index for the "next" entry, therefore the 56 1.1 mycroft * list goes from nfsrtt.rttl[pos] --> nfsrtt.rttl[pos - 1] in 57 1.1 mycroft * chronological order of completion. 58 1.1 mycroft */ 59 1.10 matt struct rttl { 60 1.10 matt u_int32_t proc; /* NFS procedure number */ 61 1.10 matt int rtt; /* Measured round trip time */ 62 1.10 matt int rto; /* Round Trip Timeout */ 63 1.10 matt int sent; /* # rpcs in progress */ 64 1.10 matt int cwnd; /* Send window */ 65 1.10 matt int srtt; /* Ave Round Trip Time */ 66 1.10 matt int sdrtt; /* Ave mean deviation of RTT */ 67 1.10 matt fsid_t fsid; /* Fsid for mount point */ 68 1.10 matt struct timeval tstamp; /* Timestamp of log entry */ 69 1.10 matt }; 70 1.10 matt 71 1.1 mycroft struct nfsrtt { 72 1.1 mycroft int pos; /* Position in array for next entry */ 73 1.10 matt struct rttl rttl[NFSRTTLOGSIZ]; 74 1.1 mycroft }; 75 1.1 mycroft 76 1.1 mycroft /* 77 1.1 mycroft * And definitions for server side performance monitor. 78 1.1 mycroft * The log organization is the same as above except it is filled in at the 79 1.1 mycroft * time the server sends the rpc reply. 80 1.1 mycroft */ 81 1.1 mycroft 82 1.1 mycroft /* 83 1.1 mycroft * Bits for the flags field. 84 1.1 mycroft */ 85 1.1 mycroft #define DRT_TCP 0x02 /* Client used TCP transport */ 86 1.1 mycroft #define DRT_CACHEREPLY 0x04 /* Reply was from recent request cache */ 87 1.1 mycroft #define DRT_CACHEDROP 0x08 /* Rpc request dropped, due to recent reply */ 88 1.4 fvdl #define DRT_NFSV3 0x10 /* Rpc used NFS Version 3 */ 89 1.1 mycroft 90 1.1 mycroft /* 91 1.1 mycroft * Server log structure 92 1.1 mycroft * NB: ipadr == INADDR_ANY indicates a client using a non IP protocol. 93 1.1 mycroft * (ISO perhaps?) 94 1.1 mycroft */ 95 1.1 mycroft struct nfsdrt { 96 1.1 mycroft int pos; /* Position of next log entry */ 97 1.1 mycroft struct drt { 98 1.4 fvdl int flag; /* Bits as defined above */ 99 1.5 fvdl u_int32_t proc; /* NFS procedure number */ 100 1.5 fvdl u_int32_t ipadr; /* IP address of client */ 101 1.4 fvdl int resptime; /* Response time (usec) */ 102 1.1 mycroft struct timeval tstamp; /* Timestamp of log entry */ 103 1.1 mycroft } drt[NFSRTTLOGSIZ]; 104 1.1 mycroft }; 105 1.6 matt 106 1.6 matt #ifdef _KERNEL 107 1.6 matt extern int nfsrtton; 108 1.6 matt #endif 109 1.4 fvdl 110 1.11 riastrad #endif /* _NFS_NFSRTT_H_ */ 111