Page MenuHomeFreeBSD

D22644.id65163.diff
No OneTemporary

D22644.id65163.diff

Index: sys/netinet/cc/cc_dctcp.c
===================================================================
--- sys/netinet/cc/cc_dctcp.c
+++ sys/netinet/cc/cc_dctcp.c
@@ -330,34 +330,35 @@
{
struct dctcp *dctcp_data;
uint32_t ccflag;
- int delay_ack;
+ int acknow;
dctcp_data = ccv->cc_data;
ccflag = ccv->flags;
- delay_ack = 1;
+ acknow = 0;
/*
* DCTCP responds with an ACK immediately when the CE state
* in between this segment and the last segment has changed.
*/
if (ccflag & CCF_IPHDR_CE) {
- if (!dctcp_data->ce_prev && (ccflag & CCF_DELACK))
- delay_ack = 0;
- dctcp_data->ce_prev = 1;
- CCV(ccv, t_flags2) |= TF2_ECN_SND_ECE;
+ if (!dctcp_data->ce_prev) {
+ acknow = 1;
+ dctcp_data->ce_prev = 1;
+ CCV(ccv, t_flags2) |= TF2_ECN_SND_ECE;
+ }
} else {
- if (dctcp_data->ce_prev && (ccflag & CCF_DELACK))
- delay_ack = 0;
- dctcp_data->ce_prev = 0;
- CCV(ccv, t_flags2) &= ~TF2_ECN_SND_ECE;
+ if (dctcp_data->ce_prev) {
+ acknow = 1;
+ dctcp_data->ce_prev = 0;
+ CCV(ccv, t_flags2) &= ~TF2_ECN_SND_ECE;
+ }
}
- /* DCTCP sets delayed ack when this segment sets the CWR flag. */
- if ((ccflag & CCF_DELACK) && (ccflag & CCF_TCPHDR_CWR))
- delay_ack = 1;
-
- if (delay_ack == 0)
+ if (acknow) {
ccv->flags |= CCF_ACKNOW;
+ } else {
+ ccv->flags &= ~CCF_ACKNOW;
+ }
}
/*
Index: sys/netinet/tcp_input.c
===================================================================
--- sys/netinet/tcp_input.c
+++ sys/netinet/tcp_input.c
@@ -530,6 +530,9 @@
case IPTOS_ECN_ECT1:
tp->ccv->flags &= ~CCF_IPHDR_CE;
break;
+ default:
+ tp->ccv->flags &= ~CCF_IPHDR_CE;
+ break;
}
if (th->th_flags & TH_CWR)
@@ -537,15 +540,12 @@
else
tp->ccv->flags &= ~CCF_TCPHDR_CWR;
- if (tp->t_flags & TF_DELACK)
- tp->ccv->flags |= CCF_DELACK;
- else
- tp->ccv->flags &= ~CCF_DELACK;
-
CC_ALGO(tp)->ecnpkt_handler(tp->ccv);
- if (tp->ccv->flags & CCF_ACKNOW)
+ if (tp->ccv->flags & CCF_ACKNOW) {
tcp_timer_activate(tp, TT_DELACK, tcp_delacktime);
+ tp->t_flags |= TF_ACKNOW;
+ }
}
}

File Metadata

Mime Type
text/plain
Expires
Tue, Sep 8, 10:45 PM (19 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38543614
Default Alt Text
D22644.id65163.diff (2 KB)

Event Timeline