diff options
| author | Andrew Gallatin <gallatin@FreeBSD.org> | 2011-04-28 14:55:34 +0000 |
|---|---|---|
| committer | Andrew Gallatin <gallatin@FreeBSD.org> | 2011-04-28 14:55:34 +0000 |
| commit | 41318a8295070c43735f1e99676323f7972088a9 (patch) | |
| tree | 5d273ab61ca5915e2e5d5a591c64f706bae39858 /sys/dev/mxge | |
| parent | 674b09dbbf416cc34a3fed5c1bb980195dca515c (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); |
