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 = ⊤ 1401 1402 while (totlen > 0) { | 1396 mp = ⊤ 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 --- |