Page MenuHomeFreeBSD

D33775.id101071.diff
No OneTemporary

D33775.id101071.diff

Index: sys/netinet/tcp_lro.h
===================================================================
--- sys/netinet/tcp_lro.h
+++ sys/netinet/tcp_lro.h
@@ -146,8 +146,9 @@
uint16_t compressed;
uint16_t uncompressed;
uint16_t window;
- uint16_t timestamp : 1;
- uint16_t needs_merge : 1;
+ uint8_t flags;
+ uint8_t timestamp : 1;
+ uint8_t needs_merge : 1;
struct bintime alloc_time; /* time when entry was allocated */
};
Index: sys/netinet/tcp_lro.c
===================================================================
--- sys/netinet/tcp_lro.c
+++ sys/netinet/tcp_lro.c
@@ -921,6 +921,7 @@
le->next_seq = ntohl(th->th_seq) + tcp_data_len;
le->ack_seq = th->th_ack;
le->window = th->th_win;
+ le->flags = th->th_flags;
le->needs_merge = 0;
/* Setup new data pointers. */
@@ -1092,10 +1093,12 @@
}
/* Try to append the new segment. */
if (__predict_false(ntohl(th->th_seq) != le->next_seq ||
+ ((th->th_flags & TH_ACK) !=
+ (le->flags & TH_ACK)) ||
(tcp_data_len == 0 &&
le->ack_seq == th->th_ack &&
le->window == th->th_win))) {
- /* Out of order packet or duplicate ACK. */
+ /* Out of order packet, non-ACK + ACK or dupl ACK. */
tcp_push_and_replace(lc, le, m);
goto again;
}

File Metadata

Mime Type
text/plain
Expires
Fri, Aug 14, 8:54 PM (1 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
36764380
Default Alt Text
D33775.id101071.diff (1 KB)

Event Timeline