Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/tcp_lro.c
Show All 12 Lines | |||||
(le->ulp_csum & 0xffff); | (le->ulp_csum & 0xffff); | ||||
th->th_sum = (le->ulp_csum & 0xffff); | th->th_sum = (le->ulp_csum & 0xffff); | ||||
th->th_sum = ~th->th_sum; | th->th_sum = ~th->th_sum; | ||||
#else | #else | ||||
th->th_sum = TCP_LRO_INVALID_CSUM; | th->th_sum = TCP_LRO_INVALID_CSUM; | ||||
#endif | #endif | ||||
} | } | ||||
le->m_head->m_pkthdr.lro_nsegs = le->append_cnt + 1; | |||||
gallatin: I have a slight twinge of paranoia that not every path that does not flow through LRO will use… | |||||
(*lc->ifp->if_input)(lc->ifp, le->m_head); | (*lc->ifp->if_input)(lc->ifp, le->m_head); | ||||
lc->lro_queued += le->append_cnt + 1; | lc->lro_queued += le->append_cnt + 1; | ||||
lc->lro_flushed++; | lc->lro_flushed++; | ||||
bzero(le, sizeof(*le)); | bzero(le, sizeof(*le)); | ||||
LIST_INSERT_HEAD(&lc->lro_free, le, next); | LIST_INSERT_HEAD(&lc->lro_free, le, next); | ||||
} | } | ||||
#ifdef HAVE_INLINE_FLSLL | #ifdef HAVE_INLINE_FLSLL | ||||
Show All 12 Lines |
I have a slight twinge of paranoia that not every path that does not flow through LRO will use a properly initialized (zeroed) pkthdr mbuf, and we might see garbage in this field.