mxge: Setup mbuf flowid before calling tcp_lro_rx().

Reviewed by:	gallatin
MFC after:	1 week
Sponsored by:	Microsoft OSTC
Differential Revision:	https://reviews.freebsd.org/D6320
This commit is contained in:
Sepherosa Ziehau 2016-05-12 03:36:49 +00:00
parent 008c25ebb9
commit eacb70ba70

View File

@ -2702,8 +2702,12 @@ mxge_rx_done_big(struct mxge_slice_state *ss, uint32_t len,
if (eh->ether_type == htons(ETHERTYPE_VLAN)) {
mxge_vlan_tag_remove(m, &csum);
}
/* flowid only valid if RSS hashing is enabled */
if (sc->num_slices > 1) {
m->m_pkthdr.flowid = (ss - sc->ss);
M_HASHTYPE_SET(m, M_HASHTYPE_OPAQUE);
}
/* if the checksum is valid, mark it in the mbuf header */
if ((ifp->if_capenable & (IFCAP_RXCSUM_IPV6 | IFCAP_RXCSUM)) &&
(0 == mxge_rx_csum(m, csum))) {
/* Tell the stack that the checksum is good */
@ -2716,11 +2720,6 @@ mxge_rx_done_big(struct mxge_slice_state *ss, uint32_t len,
return;
#endif
}
/* flowid only valid if RSS hashing is enabled */
if (sc->num_slices > 1) {
m->m_pkthdr.flowid = (ss - sc->ss);
M_HASHTYPE_SET(m, M_HASHTYPE_OPAQUE);
}
/* pass the frame up the stack */
(*ifp->if_input)(ifp, m);
}
@ -2771,6 +2770,11 @@ mxge_rx_done_small(struct mxge_slice_state *ss, uint32_t len,
if (eh->ether_type == htons(ETHERTYPE_VLAN)) {
mxge_vlan_tag_remove(m, &csum);
}
/* flowid only valid if RSS hashing is enabled */
if (sc->num_slices > 1) {
m->m_pkthdr.flowid = (ss - sc->ss);
M_HASHTYPE_SET(m, M_HASHTYPE_OPAQUE);
}
/* if the checksum is valid, mark it in the mbuf header */
if ((ifp->if_capenable & (IFCAP_RXCSUM_IPV6 | IFCAP_RXCSUM)) &&
(0 == mxge_rx_csum(m, csum))) {
@ -2784,11 +2788,6 @@ mxge_rx_done_small(struct mxge_slice_state *ss, uint32_t len,
return;
#endif
}
/* flowid only valid if RSS hashing is enabled */
if (sc->num_slices > 1) {
m->m_pkthdr.flowid = (ss - sc->ss);
M_HASHTYPE_SET(m, M_HASHTYPE_OPAQUE);
}
/* pass the frame up the stack */
(*ifp->if_input)(ifp, m);
}