Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/vmware/vmxnet3/if_vmx.c
Show First 20 Lines • Show All 2,188 Lines • ▼ Show 20 Lines | if (rxcd->sop) { | ||||
m->m_pkthdr.rcvif = ifp; | m->m_pkthdr.rcvif = ifp; | ||||
m->m_pkthdr.len = m->m_len = length; | m->m_pkthdr.len = m->m_len = length; | ||||
m->m_pkthdr.csum_flags = 0; | m->m_pkthdr.csum_flags = 0; | ||||
m_head = m_tail = m; | m_head = m_tail = m; | ||||
} else { | } else { | ||||
KASSERT(rxd->btype == VMXNET3_BTYPE_BODY, | KASSERT(rxd->btype == VMXNET3_BTYPE_BODY, | ||||
("%s: non start of frame w/o body buffer", __func__)); | ("%s: non start of frame w/o body buffer", __func__)); | ||||
if (m_head == NULL && m_tail == NULL) { | |||||
/* | |||||
* This is a continuation of a packet that we | |||||
* started to drop, but could not drop entirely | |||||
* because this segment was still owned by the | |||||
* host. So, drop the remainder now. | |||||
*/ | |||||
vmxnet3_rxq_eof_discard(rxq, rxr, idx); | |||||
if (!rxcd->eop) | |||||
vmxnet3_rxq_discard_chain(rxq); | |||||
goto nextp; | |||||
} | |||||
KASSERT(m_head != NULL, | KASSERT(m_head != NULL, | ||||
("%s: frame not started?", __func__)); | ("%s: frame not started?", __func__)); | ||||
if (vmxnet3_newbuf(sc, rxr) != 0) { | if (vmxnet3_newbuf(sc, rxr) != 0) { | ||||
rxq->vxrxq_stats.vmrxs_iqdrops++; | rxq->vxrxq_stats.vmrxs_iqdrops++; | ||||
vmxnet3_rxq_eof_discard(rxq, rxr, idx); | vmxnet3_rxq_eof_discard(rxq, rxr, idx); | ||||
if (!rxcd->eop) | if (!rxcd->eop) | ||||
vmxnet3_rxq_discard_chain(rxq); | vmxnet3_rxq_discard_chain(rxq); | ||||
▲ Show 20 Lines • Show All 1,731 Lines • Show Last 20 Lines |