Lines Matching refs:nmp
145 nfs_init_rtt(struct nfsmount *nmp) in nfs_init_rtt() argument
150 nmp->nm_srtt[i] = NFS_INITRTT; in nfs_init_rtt()
152 nmp->nm_sdrtt[i] = 0; in nfs_init_rtt()
197 nfs_estimate_rto(struct nfsmount *nmp, u_int32_t procnum) in nfs_estimate_rto() argument
206 rto = ((nmp->nm_srtt[index] + 3) >> 2) + in nfs_estimate_rto()
207 ((nmp->nm_sdrtt[index] + 1) >> 1); in nfs_estimate_rto()
211 rto = ((nmp->nm_srtt[index] + 7) >> 3) + in nfs_estimate_rto()
212 (nmp->nm_sdrtt[index] + 1); in nfs_estimate_rto()
215 rto = nmp->nm_timeo; in nfs_estimate_rto()
234 nfs_connect(struct nfsmount *nmp, struct nfsreq *rep) in nfs_connect() argument
242 if (!(nmp->nm_sotype == SOCK_DGRAM || nmp->nm_sotype == SOCK_STREAM)) in nfs_connect()
245 nmp->nm_so = NULL; in nfs_connect()
246 saddr = mtod(nmp->nm_nam, struct sockaddr *); in nfs_connect()
247 error = socreate(saddr->sa_family, &nmp->nm_so, nmp->nm_sotype, in nfs_connect()
248 nmp->nm_soproto); in nfs_connect()
250 nfs_disconnect(nmp); in nfs_connect()
255 if (nmp->nm_sotype == SOCK_STREAM || saddr->sa_family == AF_INET) in nfs_connect()
260 so = nmp->nm_so; in nfs_connect()
261 nmp->nm_soflags = so->so_proto->pr_flags; in nfs_connect()
302 if (nmp->nm_flag & NFSMNT_NOCONN) { in nfs_connect()
303 if (nmp->nm_soflags & PR_CONNREQUIRED) { in nfs_connect()
309 error = soconnect(so, nmp->nm_nam); in nfs_connect()
323 (error = nfs_sigintr(nmp, rep, rep->r_procp)) != 0){ in nfs_connect()
343 if (nmp->nm_flag & (NFSMNT_SOFT | NFSMNT_INT)) in nfs_connect()
348 if (nmp->nm_sotype == SOCK_DGRAM) { in nfs_connect()
349 sndreserve = nmp->nm_wsize + NFS_MAXPKTHDR; in nfs_connect()
350 rcvreserve = (max(nmp->nm_rsize, nmp->nm_readdirsize) + in nfs_connect()
352 } else if (nmp->nm_sotype == SOCK_STREAM) { in nfs_connect()
363 sndreserve = (nmp->nm_wsize + NFS_MAXPKTHDR + in nfs_connect()
365 rcvreserve = (nmp->nm_rsize + NFS_MAXPKTHDR + in nfs_connect()
368 panic("%s: nm_sotype %d", __func__, nmp->nm_sotype); in nfs_connect()
386 nfs_init_rtt(nmp); in nfs_connect()
387 nmp->nm_cwnd = NFS_MAXCWND / 2; /* Initial send window */ in nfs_connect()
388 nmp->nm_sent = 0; in nfs_connect()
389 nmp->nm_timeouts = 0; in nfs_connect()
399 nfs_disconnect(nmp); in nfs_connect()
416 struct nfsmount *nmp = rep->r_nmp; in nfs_reconnect() local
419 nfs_disconnect(nmp); in nfs_reconnect()
420 while ((error = nfs_connect(nmp, rep)) != 0) { in nfs_reconnect()
430 TAILQ_FOREACH(rp, &nmp->nm_reqsq, r_chain) { in nfs_reconnect()
441 nfs_disconnect(struct nfsmount *nmp) in nfs_disconnect() argument
445 if (nmp->nm_so) { in nfs_disconnect()
446 so = nmp->nm_so; in nfs_disconnect()
447 nmp->nm_so = NULL; in nfs_disconnect()
748 struct nfsmount *nmp = myrep->r_nmp; in nfs_reply() local
772 nfs_rcvunlock(&nmp->nm_flag); in nfs_reply()
778 if (NFSIGNORE_SOERROR(nmp->nm_soflags, error)) { in nfs_reply()
779 if (nmp->nm_so) in nfs_reply()
780 nmp->nm_so->so_error = 0; in nfs_reply()
808 TAILQ_FOREACH(rep, &nmp->nm_reqsq, r_chain) { in nfs_reply()
820 if (nmp->nm_cwnd <= nmp->nm_sent) { in nfs_reply()
821 nmp->nm_cwnd += in nfs_reply()
823 (nmp->nm_cwnd >> 1)) / nmp->nm_cwnd; in nfs_reply()
824 if (nmp->nm_cwnd > NFS_MAXCWND) in nfs_reply()
825 nmp->nm_cwnd = NFS_MAXCWND; in nfs_reply()
828 nmp->nm_sent -= NFS_CWNDSCALE; in nfs_reply()
833 nmp->nm_timeouts = 0; in nfs_reply()
867 struct nfsmount *nmp; in nfs_request() local
887 nmp = rep->r_nmp; in nfs_request()
896 if (nmp->nm_sotype == SOCK_STREAM) { in nfs_request()
918 if (TAILQ_EMPTY(&nmp->nm_reqsq)) in nfs_request()
919 timeout_add(&nmp->nm_rtimeout, nfs_ticks); in nfs_request()
920 TAILQ_INSERT_TAIL(&nmp->nm_reqsq, rep, r_chain); in nfs_request()
927 if (nmp->nm_so && (nmp->nm_sotype != SOCK_DGRAM || in nfs_request()
928 (nmp->nm_flag & NFSMNT_DUMBTIMR) || in nfs_request()
929 nmp->nm_sent < nmp->nm_cwnd)) { in nfs_request()
930 if (nmp->nm_soflags & PR_CONNREQUIRED) in nfs_request()
931 error = nfs_sndlock(&nmp->nm_flag, rep); in nfs_request()
933 error = nfs_send(nmp->nm_so, nmp->nm_nam, in nfs_request()
935 if (nmp->nm_soflags & PR_CONNREQUIRED) in nfs_request()
936 nfs_sndunlock(&nmp->nm_flag); in nfs_request()
939 nmp->nm_sent += NFS_CWNDSCALE; in nfs_request()
955 TAILQ_REMOVE(&nmp->nm_reqsq, rep, r_chain); in nfs_request()
956 if (TAILQ_EMPTY(&nmp->nm_reqsq)) in nfs_request()
957 timeout_del(&nmp->nm_rtimeout); in nfs_request()
964 nmp->nm_sent -= NFS_CWNDSCALE; in nfs_request()
1020 if ((nmp->nm_flag & NFSMNT_NFSV3) && in nfs_request()
1146 struct nfsmount *nmp = arg; in nfs_timer() local
1153 TAILQ_FOREACH(rep, &nmp->nm_reqsq, r_chain) { in nfs_timer()
1156 if (nfs_sigintr(nmp, rep, rep->r_procp)) { in nfs_timer()
1162 if (nmp->nm_flag & NFSMNT_DUMBTIMR) in nfs_timer()
1163 timeo = nmp->nm_timeo; in nfs_timer()
1165 timeo = nfs_estimate_rto(nmp, rep->r_procnum); in nfs_timer()
1166 if (nmp->nm_timeouts > 0) in nfs_timer()
1167 timeo *= nfs_backoff[nmp->nm_timeouts - 1]; in nfs_timer()
1170 if (nmp->nm_timeouts < nitems(nfs_backoff)) in nfs_timer()
1171 nmp->nm_timeouts++; in nfs_timer()
1179 if (rep->r_rexmit >= nmp->nm_retry) { /* too many */ in nfs_timer()
1184 if (nmp->nm_sotype != SOCK_DGRAM) { in nfs_timer()
1190 if ((so = nmp->nm_so) == NULL) in nfs_timer()
1200 ((nmp->nm_flag & NFSMNT_DUMBTIMR) || in nfs_timer()
1202 nmp->nm_sent < nmp->nm_cwnd) && in nfs_timer()
1204 if ((nmp->nm_flag & NFSMNT_NOCONN) == 0) in nfs_timer()
1207 error = pru_send(so, m, nmp->nm_nam, NULL); in nfs_timer()
1209 if (NFSIGNORE_SOERROR(nmp->nm_soflags, error)) in nfs_timer()
1221 nmp->nm_cwnd >>= 1; in nfs_timer()
1222 if (nmp->nm_cwnd < NFS_CWNDSCALE) in nfs_timer()
1223 nmp->nm_cwnd = NFS_CWNDSCALE; in nfs_timer()
1227 nmp->nm_sent += NFS_CWNDSCALE; in nfs_timer()
1234 timeout_add(&nmp->nm_rtimeout, nfs_ticks); in nfs_timer()
1242 nfs_sigintr(struct nfsmount *nmp, struct nfsreq *rep, struct proc *p) in nfs_sigintr() argument
1247 if (!(nmp->nm_flag & NFSMNT_INT)) in nfs_sigintr()