diff options
author | sephe <sephe@FreeBSD.org> | 2016-06-21 06:56:09 +0000 |
---|---|---|
committer | sephe <sephe@FreeBSD.org> | 2016-06-21 06:56:09 +0000 |
commit | b8d88a19ec41ade378eb1628c2cca68be449fc36 (patch) | |
tree | d0baa4fb41d683c063b70e1eba96e2b9e09ee3f1 | |
parent | abed506f746d339aba773d1c850870137911f70e (diff) | |
download | FreeBSD-src-b8d88a19ec41ade378eb1628c2cca68be449fc36.zip FreeBSD-src-b8d88a19ec41ade378eb1628c2cca68be449fc36.tar.gz |
MFC 299506
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
-rw-r--r-- | sys/dev/mxge/if_mxge.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/sys/dev/mxge/if_mxge.c b/sys/dev/mxge/if_mxge.c index 53fe7ac..2e21997 100644 --- a/sys/dev/mxge/if_mxge.c +++ b/sys/dev/mxge/if_mxge.c @@ -2701,8 +2701,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 */ @@ -2715,11 +2719,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); } @@ -2770,6 +2769,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))) { @@ -2783,11 +2787,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); } |