svn commit: r209384 - user/jmallett/octeon/sys/mips/cavium/cryptocteon

Juli Mallett jmallett at FreeBSD.org
Mon Jun 21 05:42:21 UTC 2010


Author: jmallett
Date: Mon Jun 21 05:42:21 2010
New Revision: 209384
URL: http://svn.freebsd.org/changeset/base/209384

Log:
  o) Use M_ZERO when allocating session data that we want zeroed rather than
     calling memset by hand.
  o) Don't memset the iovec array before using it -- it should be adequately
     bounds-checked and not need the safety net of NULL pointers and 0 lengths.
     This significantly reduces overhead.
  
     OpenSSL speed test, before:
     type           16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
     aes-128-cbc      447.60k     1754.91k     6431.14k    19025.51k    35813.38k
  
     OpenSSL speed test, after:
     type           16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
     aes-128-cbc      782.49k     3006.76k    10510.03k    26280.64k    38939.45k

Modified:
  user/jmallett/octeon/sys/mips/cavium/cryptocteon/cryptocteon.c

Modified: user/jmallett/octeon/sys/mips/cavium/cryptocteon/cryptocteon.c
==============================================================================
--- user/jmallett/octeon/sys/mips/cavium/cryptocteon/cryptocteon.c	Mon Jun 21 04:37:39 2010	(r209383)
+++ user/jmallett/octeon/sys/mips/cavium/cryptocteon/cryptocteon.c	Mon Jun 21 05:42:21 2010	(r209384)
@@ -174,7 +174,7 @@ cryptocteon_newsession(device_t dev, u_i
 			sc->sc_sesnum *= 2;
 
 		ocd = malloc(sc->sc_sesnum * sizeof(struct octo_sess *),
-			     M_DEVBUF, M_NOWAIT);
+			     M_DEVBUF, M_NOWAIT | M_ZERO);
 		if (ocd == NULL) {
 			/* Reset session number */
 			if (sc->sc_sesnum == CRYPTO_SW_SESSIONS)
@@ -184,7 +184,6 @@ cryptocteon_newsession(device_t dev, u_i
 			dprintf("%s,%d: ENOBUFS\n", __FILE__, __LINE__);
 			return ENOBUFS;
 		}
-		memset(ocd, 0, sc->sc_sesnum * sizeof(struct octo_sess *));
 
 		/* Copy existing sessions */
 		if (sc->sc_sessions) {
@@ -199,13 +198,12 @@ cryptocteon_newsession(device_t dev, u_i
 	ocd = &sc->sc_sessions[i];
 	*sid = i;
 
-	*ocd = malloc(sizeof(struct octo_sess), M_DEVBUF, M_NOWAIT);
+	*ocd = malloc(sizeof(struct octo_sess), M_DEVBUF, M_NOWAIT | M_ZERO);
 	if (*ocd == NULL) {
 		cryptocteon_freesession(NULL, i);
 		dprintf("%s,%d: ENOBUFS\n", __FILE__, __LINE__);
 		return ENOBUFS;
 	}
-	memset(*ocd, 0, sizeof(struct octo_sess));
 
 	if (encini && encini->cri_key) {
 		(*ocd)->octo_encklen = (encini->cri_klen + 7) / 8;
@@ -443,7 +441,6 @@ cryptocteon_process(device_t dev, struct
 	/*
 	 * setup the I/O vector to cover the buffer
 	 */
-	memset(od->octo_iov, 0, sizeof od->octo_iov);
 	if (crp->crp_flags & CRYPTO_F_IMBUF) {
 		iovcnt = 0;
 		iovlen = 0;


More information about the svn-src-user mailing list