Changeset View
Changeset View
Standalone View
Standalone View
sys/net/iflib.c
Show First 20 Lines • Show All 2,821 Lines • ▼ Show 20 Lines | if (ri->iri_nfrags == 1 && | ||||
ri->iri_frags[0].irf_len <= MIN(IFLIB_RX_COPY_THRESH, MHLEN)) { | ri->iri_frags[0].irf_len <= MIN(IFLIB_RX_COPY_THRESH, MHLEN)) { | ||||
m = rxd_frag_to_sd(rxq, &ri->iri_frags[0], false, &sd, | m = rxd_frag_to_sd(rxq, &ri->iri_frags[0], false, &sd, | ||||
&pf_rv, ri); | &pf_rv, ri); | ||||
if (pf_rv != PFIL_PASS && pf_rv != PFIL_REALLOCED) | if (pf_rv != PFIL_PASS && pf_rv != PFIL_REALLOCED) | ||||
return (m); | return (m); | ||||
if (pf_rv == PFIL_PASS) { | if (pf_rv == PFIL_PASS) { | ||||
m_init(m, M_NOWAIT, MT_DATA, M_PKTHDR); | m_init(m, M_NOWAIT, MT_DATA, M_PKTHDR); | ||||
#ifndef __NO_STRICT_ALIGNMENT | #ifndef __NO_STRICT_ALIGNMENT | ||||
if (!IP_ALIGNED(m)) | if (!IP_ALIGNED(m) && ri->iri_pad == 0) | ||||
m->m_data += 2; | m->m_data += 2; | ||||
#endif | #endif | ||||
memcpy(m->m_data, *sd.ifsd_cl, ri->iri_len); | memcpy(m->m_data, *sd.ifsd_cl, ri->iri_len); | ||||
m->m_len = ri->iri_frags[0].irf_len; | m->m_len = ri->iri_frags[0].irf_len; | ||||
m->m_data += ri->iri_pad; | |||||
ri->iri_len -= ri->iri_pad; | |||||
} | } | ||||
} else { | } else { | ||||
m = assemble_segments(rxq, ri, &sd, &pf_rv); | m = assemble_segments(rxq, ri, &sd, &pf_rv); | ||||
if (m == NULL) | if (m == NULL) | ||||
return (NULL); | return (NULL); | ||||
if (pf_rv != PFIL_PASS && pf_rv != PFIL_REALLOCED) | if (pf_rv != PFIL_PASS && pf_rv != PFIL_REALLOCED) | ||||
return (m); | return (m); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 4,319 Lines • Show Last 20 Lines |