Page MenuHomeFreeBSD

D39502.diff
No OneTemporary

D39502.diff

diff --git a/sys/netinet/tcp_lro.c b/sys/netinet/tcp_lro.c
--- a/sys/netinet/tcp_lro.c
+++ b/sys/netinet/tcp_lro.c
@@ -1195,6 +1195,19 @@
le->m_last_mbuf = NULL;
}
+static bool
+tcp_lro_check_wake_status(struct inpcb *inp)
+{
+ struct tcpcb *tp;
+
+ tp = intotcpcb(inp);
+ if (__predict_false(tp == NULL))
+ return (true);
+ if (tp->t_fb->tfb_early_wake_check != NULL)
+ return ((tp->t_fb->tfb_early_wake_check)(tp));
+ return (false);
+}
+
static struct mbuf *
tcp_lro_get_last_if_ackcmp(struct lro_ctrl *lc, struct lro_entry *le,
struct inpcb *inp, int32_t *new_m, bool can_append_old_cmp)
@@ -1751,6 +1764,9 @@
* not care about SACKS, then we should wake up.
*/
*should_wake = true;
+ } else if (*should_wake == false) {
+ /* Wakeup override check if we are false here */
+ *should_wake = tcp_lro_check_wake_status(inp);
}
/* Is the ack compressable? */
if (can_compress == false)

File Metadata

Mime Type
text/plain
Expires
Fri, Jan 10, 1:58 AM (10 h, 29 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15738222
Default Alt Text
D39502.diff (919 B)

Event Timeline