finish what I was doing when someone checked this in for me (half-done)
authorMike Karels <karels@ucbvax.Berkeley.EDU>
Sun, 21 Apr 1991 07:32:29 +0000 (23:32 -0800)
committerMike Karels <karels@ucbvax.Berkeley.EDU>
Sun, 21 Apr 1991 07:32:29 +0000 (23:32 -0800)
SCCS-vsn: sys/nfs/nfs_socket.c 7.23

usr/src/sys/nfs/nfs_socket.c

index 784dedf..1cce8ab 100644 (file)
@@ -7,7 +7,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)nfs_socket.c        7.22 (Berkeley) %G%
+ *     @(#)nfs_socket.c        7.23 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
@@ -124,7 +124,7 @@ nfs_connect(nmp)
        register struct nfsmount *nmp;
 {
        register struct socket *so;
        register struct nfsmount *nmp;
 {
        register struct socket *so;
-       int s, error;
+       int s, error, bufsize;
        struct mbuf *m;
 
        nmp->nm_so = (struct socket *)0;
        struct mbuf *m;
 
        nmp->nm_so = (struct socket *)0;
@@ -134,6 +134,15 @@ nfs_connect(nmp)
        so = nmp->nm_so;
        nmp->nm_soflags = so->so_proto->pr_flags;
 
        so = nmp->nm_so;
        nmp->nm_soflags = so->so_proto->pr_flags;
 
+       if (nmp->nm_sotype == SOCK_DGRAM)
+               bufsize = min(4 * (nmp->nm_wsize + NFS_MAXPKTHDR),
+                   NFS_MAXPACKET);
+       else
+               bufsize = min(4 * (nmp->nm_wsize + NFS_MAXPKTHDR + sizeof(u_long)),
+                   NFS_MAXPACKET + sizeof(u_long));
+       if (error = soreserve(so, bufsize, bufsize))
+               goto bad;
+
        /*
         * Protocols that do not require connections may be optionally left
         * unconnected for servers that reply from a port other than NFS_PORT.
        /*
         * Protocols that do not require connections may be optionally left
         * unconnected for servers that reply from a port other than NFS_PORT.
@@ -168,10 +177,7 @@ nfs_connect(nmp)
                        so->so_rcv.sb_timeo = 0;
                        so->so_snd.sb_timeo = 0;
                }
                        so->so_rcv.sb_timeo = 0;
                        so->so_snd.sb_timeo = 0;
                }
-               if (error = soreserve(so,
-                   min(4 * (nmp->nm_wsize + NFS_MAXPKTHDR), NFS_MAXPACKET),
-                   min(4 * (nmp->nm_rsize + NFS_MAXPKTHDR), NFS_MAXPACKET)))
-                       goto bad;
+               nmp->nm_rto = NFS_TIMEO;
        } else {
                if (nmp->nm_flag & (NFSMNT_SOFT | NFSMNT_SPONGY | NFSMNT_INT)) {
                        so->so_rcv.sb_timeo = (5 * hz);
        } else {
                if (nmp->nm_flag & (NFSMNT_SOFT | NFSMNT_SPONGY | NFSMNT_INT)) {
                        so->so_rcv.sb_timeo = (5 * hz);
@@ -194,20 +200,14 @@ nfs_connect(nmp)
                        m->m_len = sizeof(int);
                        sosetopt(so, IPPROTO_TCP, TCP_NODELAY, m);
                }
                        m->m_len = sizeof(int);
                        sosetopt(so, IPPROTO_TCP, TCP_NODELAY, m);
                }
-               if (error = soreserve(so,
-                   min(4 * (nmp->nm_wsize + NFS_MAXPKTHDR + sizeof(u_long)),
-                   NFS_MAXPACKET + sizeof(u_long)),
-                   min(4 * (nmp->nm_rsize + NFS_MAXPKTHDR + sizeof(u_long)),
-                   NFS_MAXPACKET + sizeof(u_long))))
-                       goto bad;
+               nmp->nm_rto = 10 * NFS_TIMEO;           /* XXX */
        }
        so->so_rcv.sb_flags |= SB_NOINTR;
        so->so_snd.sb_flags |= SB_NOINTR;
 
        /* Initialize other non-zero congestion variables */
        }
        so->so_rcv.sb_flags |= SB_NOINTR;
        so->so_snd.sb_flags |= SB_NOINTR;
 
        /* Initialize other non-zero congestion variables */
-       nmp->nm_rto = NFS_TIMEO;
-       nmp->nm_window = 2;                 /* Initial send window */
-       nmp->nm_ssthresh = NFS_MAXWINDOW; /* Slowstart threshold */
+       nmp->nm_window = 2;                     /* Initial send window */
+       nmp->nm_ssthresh = NFS_MAXWINDOW;       /* Slowstart threshold */
        nmp->nm_rttvar = nmp->nm_rto << 1;
        nmp->nm_sent = 0;
        nmp->nm_currexmit = 0;
        nmp->nm_rttvar = nmp->nm_rto << 1;
        nmp->nm_sent = 0;
        nmp->nm_currexmit = 0;