Deleted Added
full compact
ubsec.c (159341) ubsec.c (160931)
1/* $OpenBSD: ubsec.c,v 1.115 2002/09/24 18:33:26 jason Exp $ */
2
3/*-
4 * Copyright (c) 2000 Jason L. Wright (jason@thought.net)
5 * Copyright (c) 2000 Theo de Raadt (deraadt@openbsd.org)
6 * Copyright (c) 2001 Patrik Lindergren (patrik@ipunplugged.com)
7 *
8 * All rights reserved.

--- 25 unchanged lines hidden (view full) ---

34 * POSSIBILITY OF SUCH DAMAGE.
35 *
36 * Effort sponsored in part by the Defense Advanced Research Projects
37 * Agency (DARPA) and Air Force Research Laboratory, Air Force
38 * Materiel Command, USAF, under agreement number F30602-01-2-0537.
39 */
40
41#include <sys/cdefs.h>
1/* $OpenBSD: ubsec.c,v 1.115 2002/09/24 18:33:26 jason Exp $ */
2
3/*-
4 * Copyright (c) 2000 Jason L. Wright (jason@thought.net)
5 * Copyright (c) 2000 Theo de Raadt (deraadt@openbsd.org)
6 * Copyright (c) 2001 Patrik Lindergren (patrik@ipunplugged.com)
7 *
8 * All rights reserved.

--- 25 unchanged lines hidden (view full) ---

34 * POSSIBILITY OF SUCH DAMAGE.
35 *
36 * Effort sponsored in part by the Defense Advanced Research Projects
37 * Agency (DARPA) and Air Force Research Laboratory, Air Force
38 * Materiel Command, USAF, under agreement number F30602-01-2-0537.
39 */
40
41#include <sys/cdefs.h>
42__FBSDID("$FreeBSD: head/sys/dev/ubsec/ubsec.c 159341 2006-06-06 13:58:12Z pjd $");
42__FBSDID("$FreeBSD: head/sys/dev/ubsec/ubsec.c 160931 2006-08-02 17:41:58Z jhb $");
43
44/*
45 * uBsec 5[56]01, 58xx hardware crypto accelerator
46 */
47
48#include "opt_ubsec.h"
49
50#include <sys/param.h>

--- 1313 unchanged lines hidden (view full) ---

1364 if (nicealign) {
1365 q->q_dst = q->q_src;
1366 } else {
1367 int totlen, len;
1368 struct mbuf *m, *top, **mp;
1369
1370 ubsecstats.hst_unaligned++;
1371 totlen = q->q_src_mapsize;
43
44/*
45 * uBsec 5[56]01, 58xx hardware crypto accelerator
46 */
47
48#include "opt_ubsec.h"
49
50#include <sys/param.h>

--- 1313 unchanged lines hidden (view full) ---

1364 if (nicealign) {
1365 q->q_dst = q->q_src;
1366 } else {
1367 int totlen, len;
1368 struct mbuf *m, *top, **mp;
1369
1370 ubsecstats.hst_unaligned++;
1371 totlen = q->q_src_mapsize;
1372 if (q->q_src_m->m_flags & M_PKTHDR) {
1372 if (totlen >= MINCLSIZE) {
1373 m = m_getcl(M_DONTWAIT, MT_DATA,
1374 q->q_src_m->m_flags & M_PKTHDR);
1375 len = MCLBYTES;
1376 } else if (q->q_src_m->m_flags & M_PKTHDR) {
1377 m = m_gethdr(M_DONTWAIT, MT_DATA);
1373 len = MHLEN;
1378 len = MHLEN;
1374 MGETHDR(m, M_DONTWAIT, MT_DATA);
1375 if (m && !m_dup_pkthdr(m, q->q_src_m, M_DONTWAIT)) {
1376 m_free(m);
1377 m = NULL;
1378 }
1379 } else {
1379 } else {
1380 m = m_get(M_DONTWAIT, MT_DATA);
1380 len = MLEN;
1381 len = MLEN;
1381 MGET(m, M_DONTWAIT, MT_DATA);
1382 }
1382 }
1383 if (m && q->q_src_m->m_flags & M_PKTHDR &&
1384 !m_dup_pkthdr(m, q->q_src_m, M_DONTWAIT)) {
1385 m_free(m);
1386 m = NULL;
1387 }
1383 if (m == NULL) {
1384 ubsecstats.hst_nombuf++;
1385 err = sc->sc_nqueue ? ERESTART : ENOMEM;
1386 goto errout;
1387 }
1388 if (m == NULL) {
1389 ubsecstats.hst_nombuf++;
1390 err = sc->sc_nqueue ? ERESTART : ENOMEM;
1391 goto errout;
1392 }
1388 if (totlen >= MINCLSIZE) {
1389 MCLGET(m, M_DONTWAIT);
1390 if ((m->m_flags & M_EXT) == 0) {
1391 m_free(m);
1392 ubsecstats.hst_nomcl++;
1393 err = sc->sc_nqueue ? ERESTART : ENOMEM;
1394 goto errout;
1395 }
1396 len = MCLBYTES;
1397 }
1398 m->m_len = len;
1399 top = NULL;
1393 m->m_len = len = min(totlen, len);
1394 totlen -= len;
1395 top = m;
1400 mp = &top;
1401
1402 while (totlen > 0) {
1396 mp = &top;
1397
1398 while (totlen > 0) {
1403 if (top) {
1404 MGET(m, M_DONTWAIT, MT_DATA);
1405 if (m == NULL) {
1406 m_freem(top);
1407 ubsecstats.hst_nombuf++;
1408 err = sc->sc_nqueue ? ERESTART : ENOMEM;
1409 goto errout;
1410 }
1399 if (totlen >= MINCLSIZE) {
1400 m = m_getcl(M_DONTWAIT,
1401 MT_DATA, 0);
1402 len = MCLBYTES;
1403 } else {
1404 m = m_get(M_DONTWAIT, MT_DATA);
1411 len = MLEN;
1412 }
1405 len = MLEN;
1406 }
1413 if (top && totlen >= MINCLSIZE) {
1414 MCLGET(m, M_DONTWAIT);
1415 if ((m->m_flags & M_EXT) == 0) {
1416 *mp = m;
1417 m_freem(top);
1418 ubsecstats.hst_nomcl++;
1419 err = sc->sc_nqueue ? ERESTART : ENOMEM;
1420 goto errout;
1421 }
1422 len = MCLBYTES;
1407 if (m == NULL) {
1408 m_freem(top);
1409 ubsecstats.hst_nombuf++;
1410 err = sc->sc_nqueue ? ERESTART : ENOMEM;
1411 goto errout;
1423 }
1424 m->m_len = len = min(totlen, len);
1425 totlen -= len;
1426 *mp = m;
1427 mp = &m->m_next;
1428 }
1429 q->q_dst_m = top;
1430 ubsec_mcopy(q->q_src_m, q->q_dst_m,

--- 1458 unchanged lines hidden ---
1412 }
1413 m->m_len = len = min(totlen, len);
1414 totlen -= len;
1415 *mp = m;
1416 mp = &m->m_next;
1417 }
1418 q->q_dst_m = top;
1419 ubsec_mcopy(q->q_src_m, q->q_dst_m,

--- 1458 unchanged lines hidden ---