diff options
| author | Andrew Gallatin <gallatin@FreeBSD.org> | 2011-04-07 13:49:44 +0000 |
|---|---|---|
| committer | Andrew Gallatin <gallatin@FreeBSD.org> | 2011-04-07 13:49:44 +0000 |
| commit | 534e6f47c1401590fde142109aa19ef574b24d18 (patch) | |
| tree | e4cba06d8921115a9faa75e3d51ac73136fc2e51 /sys/dev/mxge | |
| parent | 5e7d0e6482a85828b7a95e5198275128fc8f4880 (diff) | |
Notes
Diffstat (limited to 'sys/dev/mxge')
| -rw-r--r-- | sys/dev/mxge/mxge_lro.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/mxge/mxge_lro.c b/sys/dev/mxge/mxge_lro.c index 228e22bb721b..b3130592f7a2 100644 --- a/sys/dev/mxge/mxge_lro.c +++ b/sys/dev/mxge/mxge_lro.c @@ -237,8 +237,10 @@ mxge_lro_rx(struct mxge_slice_state *ss, struct mbuf *m_head, uint32_t csum) lro->dest_ip == ip->ip_dst.s_addr) { /* Try to append it */ - if (__predict_false(seq != lro->next_seq)) { - /* out of order packet */ + if (__predict_false(seq != lro->next_seq || + (tcp_data_len == 0 && + lro->ack_seq == tcp->th_ack))) { + /* out of order packet or dup ack */ SLIST_REMOVE(&ss->lro_active, lro, lro_entry, next); mxge_lro_flush(ss, lro); |
