Fix a bug in mxge's LRO which can cause dup acks to
get aggregated & hence prevent TCP from entering fast retransmit. Pointed out by: jeff Reviewed by: gnn MFC after: 7 days
This commit is contained in:
parent
5e7d0e6482
commit
534e6f47c1
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user