lance.c (9307d8bdd4de57183bb421d18d34d21febe98656) | lance.c (c6499eccad497913a5025fbde8ae76da70e08043) |
---|---|
1/* $NetBSD: lance.c,v 1.34 2005/12/24 20:27:30 perry Exp $ */ 2 3/*- 4 * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by Charles M. Hannum and by Jason R. Thorpe of the Numerical Aerospace --- 380 unchanged lines hidden (view full) --- 389 390 if (totlen <= ETHER_HDR_LEN || totlen > LEBLEN - ETHER_CRC_LEN) { 391#ifdef LEDEBUG 392 if_printf(ifp, "invalid packet size %d; dropping\n", totlen); 393#endif 394 return (NULL); 395 } 396 | 1/* $NetBSD: lance.c,v 1.34 2005/12/24 20:27:30 perry Exp $ */ 2 3/*- 4 * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by Charles M. Hannum and by Jason R. Thorpe of the Numerical Aerospace --- 380 unchanged lines hidden (view full) --- 389 390 if (totlen <= ETHER_HDR_LEN || totlen > LEBLEN - ETHER_CRC_LEN) { 391#ifdef LEDEBUG 392 if_printf(ifp, "invalid packet size %d; dropping\n", totlen); 393#endif 394 return (NULL); 395 } 396 |
397 MGETHDR(m0, M_DONTWAIT, MT_DATA); | 397 MGETHDR(m0, M_NOWAIT, MT_DATA); |
398 if (m0 == NULL) 399 return (NULL); 400 m0->m_pkthdr.rcvif = ifp; 401 m0->m_pkthdr.len = totlen; 402 len = MHLEN; 403 m = m0; 404 405 while (totlen > 0) { 406 if (totlen >= MINCLSIZE) { | 398 if (m0 == NULL) 399 return (NULL); 400 m0->m_pkthdr.rcvif = ifp; 401 m0->m_pkthdr.len = totlen; 402 len = MHLEN; 403 m = m0; 404 405 while (totlen > 0) { 406 if (totlen >= MINCLSIZE) { |
407 MCLGET(m, M_DONTWAIT); | 407 MCLGET(m, M_NOWAIT); |
408 if ((m->m_flags & M_EXT) == 0) 409 goto bad; 410 len = MCLBYTES; 411 } 412 413 if (m == m0) { 414 newdata = (caddr_t) 415 ALIGN(m->m_data + ETHER_HDR_LEN) - ETHER_HDR_LEN; 416 len -= newdata - m->m_data; 417 m->m_data = newdata; 418 } 419 420 m->m_len = len = min(totlen, len); 421 (*sc->sc_copyfrombuf)(sc, mtod(m, caddr_t), boff, len); 422 boff += len; 423 424 totlen -= len; 425 if (totlen > 0) { | 408 if ((m->m_flags & M_EXT) == 0) 409 goto bad; 410 len = MCLBYTES; 411 } 412 413 if (m == m0) { 414 newdata = (caddr_t) 415 ALIGN(m->m_data + ETHER_HDR_LEN) - ETHER_HDR_LEN; 416 len -= newdata - m->m_data; 417 m->m_data = newdata; 418 } 419 420 m->m_len = len = min(totlen, len); 421 (*sc->sc_copyfrombuf)(sc, mtod(m, caddr_t), boff, len); 422 boff += len; 423 424 totlen -= len; 425 if (totlen > 0) { |
426 MGET(newm, M_DONTWAIT, MT_DATA); | 426 MGET(newm, M_NOWAIT, MT_DATA); |
427 if (newm == 0) 428 goto bad; 429 len = MLEN; 430 m = m->m_next = newm; 431 } 432 } 433 434 return (m0); --- 389 unchanged lines hidden --- | 427 if (newm == 0) 428 goto bad; 429 len = MLEN; 430 m = m->m_next = newm; 431 } 432 } 433 434 return (m0); --- 389 unchanged lines hidden --- |