Module Name: src Committed By: tls Date: Sun Aug 10 06:56:43 UTC 2014
Modified Files: src/sys/netsmb [tls-earlyentropy]: smb_dev.c smb_trantcp.c smb_trantcp.h Log Message: Rebase. To generate a diff of this commit: cvs rdiff -u -r1.41 -r1.41.2.1 src/sys/netsmb/smb_dev.c cvs rdiff -u -r1.44 -r1.44.26.1 src/sys/netsmb/smb_trantcp.c cvs rdiff -u -r1.6 -r1.6.56.1 src/sys/netsmb/smb_trantcp.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/netsmb/smb_dev.c diff -u src/sys/netsmb/smb_dev.c:1.41 src/sys/netsmb/smb_dev.c:1.41.2.1 --- src/sys/netsmb/smb_dev.c:1.41 Sun Mar 16 05:20:30 2014 +++ src/sys/netsmb/smb_dev.c Sun Aug 10 06:56:43 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: smb_dev.c,v 1.41 2014/03/16 05:20:30 dholland Exp $ */ +/* $NetBSD: smb_dev.c,v 1.41.2.1 2014/08/10 06:56:43 tls Exp $ */ /* * Copyright (c) 2000-2001 Boris Popov @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: smb_dev.c,v 1.41 2014/03/16 05:20:30 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: smb_dev.c,v 1.41.2.1 2014/08/10 06:56:43 tls Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -95,6 +95,7 @@ const struct cdevsw nsmb_cdevsw = { .d_poll = nopoll, .d_mmap = nommap, .d_kqfilter = nokqfilter, + .d_discard = nodiscard, .d_flag = D_OTHER, }; Index: src/sys/netsmb/smb_trantcp.c diff -u src/sys/netsmb/smb_trantcp.c:1.44 src/sys/netsmb/smb_trantcp.c:1.44.26.1 --- src/sys/netsmb/smb_trantcp.c:1.44 Wed Aug 31 18:31:04 2011 +++ src/sys/netsmb/smb_trantcp.c Sun Aug 10 06:56:43 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: smb_trantcp.c,v 1.44 2011/08/31 18:31:04 plunky Exp $ */ +/* $NetBSD: smb_trantcp.c,v 1.44.26.1 2014/08/10 06:56:43 tls Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -61,12 +61,12 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: smb_trantcp.c,v 1.44 2011/08/31 18:31:04 plunky Exp $"); +__KERNEL_RCSID(0, "$NetBSD: smb_trantcp.c,v 1.44.26.1 2014/08/10 06:56:43 tls Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/kernel.h> -#include <sys/malloc.h> +#include <sys/kmem.h> #include <sys/mbuf.h> #include <sys/proc.h> #include <sys/protosw.h> @@ -92,17 +92,14 @@ __KERNEL_RCSID(0, "$NetBSD: smb_trantcp. #include <netsmb/smb_trantcp.h> #include <netsmb/smb_subr.h> -#define M_NBDATA M_PCB - static int nb_tcpsndbuf = NB_SNDQ; static int nb_tcprcvbuf = NB_RCVQ; -static const struct timespec nb_timo = { 15, 0 }; /* XXX sysctl? */ #define nb_sosend(so,m,flags,l) (*(so)->so_send)(so, NULL, (struct uio *)0, \ m, (struct mbuf *)0, flags, l) static int nbssn_recv(struct nbpcb *nbp, struct mbuf **mpp, int *lenp, - u_int8_t *rpcodep, struct lwp *l); + u_int8_t *rpcodep, bool firstwait, struct lwp *l); static int smb_nbst_disconnect(struct smb_vc *vcp, struct lwp *l); static int @@ -113,14 +110,6 @@ nb_setsockopt_int(struct socket *so, int } static int -nbssn_rselect(struct nbpcb *nbp, const struct timespec *ts, int events, - struct lwp *l) -{ - - return pollsock(nbp->nbp_tso, ts, events); -} - -static int nb_intr(struct nbpcb *nbp, struct lwp *l) { return 0; @@ -184,8 +173,8 @@ nb_connect_in(struct nbpcb *nbp, struct so->so_rcv.sb_flags |= SB_UPCALL; so->so_rcv.sb_flags &= ~SB_NOINTR; so->so_snd.sb_flags &= ~SB_NOINTR; - so->so_rcv.sb_timeo = NB_SNDTIMEO; - so->so_snd.sb_timeo = NB_RCVTIMEO; + so->so_rcv.sb_timeo = NB_RCVTIMEO * hz; + so->so_snd.sb_timeo = NB_RCVTIMEO * hz; error = soreserve(so, nb_tcpsndbuf, nb_tcprcvbuf); sounlock(so); if (error) @@ -250,15 +239,12 @@ nbssn_rq_request(struct nbpcb *nbp, stru mb_done(mbp); if (error) return error; - error = nbssn_rselect(nbp, &nb_timo, POLLIN, l); - if (error == EWOULDBLOCK) { /* Timeout */ - NBDEBUG(("initial request timeout\n")); - return ETIMEDOUT; - } - if (error) /* restart or interrupt */ - return error; - error = nbssn_recv(nbp, &m0, &rplen, &rpcode, l); + error = nbssn_recv(nbp, &m0, &rplen, &rpcode, true, l); if (error) { + if (error == EWOULDBLOCK) { /* Timeout */ + NBDEBUG(("initial request timeout\n")); + return ETIMEDOUT; + } NBDEBUG(("recv() error %d\n", error)); return error; } @@ -338,7 +324,7 @@ nbssn_recvhdr(struct nbpcb *nbp, int *le static int nbssn_recv(struct nbpcb *nbp, struct mbuf **mpp, int *lenp, - u_int8_t *rpcodep, struct lwp *l) + u_int8_t *rpcodep, bool dowait, struct lwp *l) { struct socket *so = nbp->nbp_tso; struct uio auio; @@ -356,12 +342,13 @@ nbssn_recv(struct nbpcb *nbp, struct mbu if (mpp) *mpp = NULL; m = NULL; - for(;;) { + for(;; dowait = false) { /* * Poll for a response header. * If we don't have one waiting, return. */ - error = nbssn_recvhdr(nbp, &len, &rpcode, MSG_DONTWAIT, l); + error = nbssn_recvhdr(nbp, &len, &rpcode, + dowait ? 0 : MSG_DONTWAIT, l); if (so->so_state & (SS_ISDISCONNECTING | SS_ISDISCONNECTED | SS_CANTRCVMORE)) { nbp->nbp_state = NBST_CLOSED; @@ -463,7 +450,7 @@ smb_nbst_create(struct smb_vc *vcp, stru { struct nbpcb *nbp; - nbp = malloc(sizeof *nbp, M_NBDATA, M_WAITOK|M_ZERO); + nbp = kmem_zalloc(sizeof(*nbp), KM_SLEEP); nbp->nbp_state = NBST_CLOSED; nbp->nbp_vc = vcp; vcp->vc_tdata = nbp; @@ -482,7 +469,7 @@ smb_nbst_done(struct smb_vc *vcp, struct free(nbp->nbp_laddr, M_SONAME); if (nbp->nbp_paddr) free(nbp->nbp_paddr, M_SONAME); - free(nbp, M_NBDATA); + kmem_free(nbp, sizeof(*nbp)); return 0; } @@ -606,7 +593,7 @@ smb_nbst_recv(struct smb_vc *vcp, struct int error, rplen; nbp->nbp_flags |= NBF_RECVLOCK; - error = nbssn_recv(nbp, mpp, &rplen, &rpcode, l); + error = nbssn_recv(nbp, mpp, &rplen, &rpcode, false, l); nbp->nbp_flags &= ~NBF_RECVLOCK; return error; } @@ -646,8 +633,8 @@ smb_nbst_getparam(struct smb_vc *vcp, in break; case SMBTP_TIMEOUT: tvp = (struct timeval *)data; - tvp->tv_sec = nb_timo.tv_sec; - tvp->tv_usec = nb_timo.tv_nsec / 1000; + tvp->tv_sec = NB_RCVTIMEO; + tvp->tv_usec = 0; break; default: return EINVAL; Index: src/sys/netsmb/smb_trantcp.h diff -u src/sys/netsmb/smb_trantcp.h:1.6 src/sys/netsmb/smb_trantcp.h:1.6.56.1 --- src/sys/netsmb/smb_trantcp.h:1.6 Tue Jun 24 10:37:19 2008 +++ src/sys/netsmb/smb_trantcp.h Sun Aug 10 06:56:43 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: smb_trantcp.h,v 1.6 2008/06/24 10:37:19 gmcgarry Exp $ */ +/* $NetBSD: smb_trantcp.h,v 1.6.56.1 2014/08/10 06:56:43 tls Exp $ */ /* * Copyright (c) 2000-2001, Boris Popov @@ -82,10 +82,10 @@ struct nbpcb { #define NB_RCVQ (64 * 1024) /* - * Timeouts used for send/receive. XXX Sysctl this? + * Timeouts (s) used for send/receive. XXX Sysctl this? */ -#define NB_SNDTIMEO (5 * hz) -#define NB_RCVTIMEO (5 * hz) +#define NB_SNDTIMEO (5) +#define NB_RCVTIMEO (5) /* * TCP slowstart presents a problem in conjunction with large