[OSKITTCP]
[reactos.git] / reactos / lib / drivers / oskittcp / oskittcp / tcp_input.c
index 1811476..ed2759a 100644 (file)
@@ -84,6 +84,7 @@ struct inpcbinfo tcbinfo;
  * Set DELACK for segments received in order, but ack immediately
  * when segments are out of order (so fast retransmit can work).
  */
+#ifdef TCP_ACK_HACK
 #define        TCP_REASS(tp, ti, m, so, flags) { \
        if ((ti)->ti_seq == (tp)->rcv_nxt && \
            (tp)->seg_next == (struct tcpiphdr *)(tp) && \
@@ -103,6 +104,24 @@ struct inpcbinfo tcbinfo;
                tp->t_flags |= TF_ACKNOW; \
        } \
 }
+#else
+#define        TCP_REASS(tp, ti, m, so, flags) { \
+       if ((ti)->ti_seq == (tp)->rcv_nxt && \
+           (tp)->seg_next == (struct tcpiphdr *)(tp) && \
+           (tp)->t_state == TCPS_ESTABLISHED) { \
+               tp->t_flags |= TF_DELACK; \
+               (tp)->rcv_nxt += (ti)->ti_len; \
+               flags = (ti)->ti_flags & TH_FIN; \
+               tcpstat.tcps_rcvpack++;\
+               tcpstat.tcps_rcvbyte += (ti)->ti_len;\
+               sbappend(&(so)->so_rcv, (m)); \
+               sorwakeup(so); \
+       } else { \
+               (flags) = tcp_reass((tp), (ti), (m)); \
+               tp->t_flags |= TF_ACKNOW; \
+       } \
+}
+#endif
 #ifndef TUBA_INCLUDE
 
 int
@@ -573,6 +592,7 @@ findpcb:
                         */
                        sbappend(&so->so_rcv, m);
                        sorwakeup(so);
+#ifdef TCP_ACK_HACK
                        /*
                         * If this is a short packet, then ACK now - with Nagel
                         *      congestion avoidance sender won't send more until
@@ -584,6 +604,9 @@ findpcb:
                        } else {
                                tp->t_flags |= TF_DELACK;
                        }
+#else
+                       tp->t_flags |= TF_DELACK;
+#endif
                        return;
                }
        }