From nobody Sat Feb 24 18:24:01 2024 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ThwJ43Bc6z5BK8l; Sat, 24 Feb 2024 18:24:04 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ThwJ40dNvz4t5J; Sat, 24 Feb 2024 18:24:04 +0000 (UTC) (envelope-from bapt@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1708799044; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=lnNWorn/EbcT2+wQv3U2m8eGn/hgKqnV0qFIKleNXGw=; b=OyTkXusOQMMqAP9OlNwzBWqkyrPtalBsLebaa4BvSIm8u+LdbgkSHQkwAGtxCzejh/VFbF ebHrIW6GVen4eTIg679YsfHo7cd1Cluay2bpDaNxrxGl3n5HUsw8gZsb/la+D1lx0S1D/x wTdvd5mhyUtpUTcdPiMxii07Nf3I+pk9cmNrkgWuHqNKqJ71JWvfNxy47CDWiZCZO4ktf5 itzrss29o6zI4yedv/4lQQyywp0UM/H6ddVXVKssCWCiUzeWkVAgXxxtL99yXHSJlxl6fg fQVxe1wIO7uwyWj8fs2o8pa47A/BiDLCTTb2l09b0jTmDj+H1EhYk2SDYiPsPA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1708799044; a=rsa-sha256; cv=none; b=VqvhTKbejXqDLp1OZWqOAZvPbl9U37EewL+M0Kc75YiLbI/j6qSRDxRvXyyvaGc1RjP+vg y+vPZD6j7oBSbMYbOB59r3k4uWFUV//I3gHBiUSbT+nwdP/JR4m6Nt1ADCH5wU4p5oFdI8 PbrPHpRKzjxbU5UftlIQydZhyyntP0V7MyHGwaX3xQ4kRQzWTtlNsHnZSfpWB8/OD6aJ4s QPuupi4ZrS8E2iLzyq9XkwiZI297dmMLvZ58g3ohfNo1nTSExR3ptij7Vtesvc6g+y2YfE Dv/iy6tHxJxLyLMz0MEMEL74qGzCNbyRGPSxp2NiMT6yTTrp1fQvF+5BOoTB/g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1708799044; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=lnNWorn/EbcT2+wQv3U2m8eGn/hgKqnV0qFIKleNXGw=; b=h+5XmG2NawLewjEMNMiYmxft5ct3Td2bjOK24OPzTX/x+iSmU0t6wRftZrndPMJP7k1pgi S5R4hjvbgacZ5KCI4VKZeWfy2Ae5nHapkV5GvP+CTvqrSvQwG1f4ZO0gZy9Qbeh0zE214h OvowdI5kYio3pBuftzYAxiYtdFyVtJSuTa7uehKkjgRINm3IP/QZ/FjTF9rnRVfXo7lkqt bQ4WFGSv9Znr1LiZZqKGWp1qyXsbLwcGB+5oSU4zYM/vZVlO29RwOKqskaHLcCOot9Ii2W FGTYtN4hfYGtv6uNnOPgIA66ntb3KNbSXAZCqN5VCJJlGEv6GR6D0nK2BH4+nA== Received: from aniel.nours.eu (nours.eu [176.31.115.77]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: bapt) by smtp.freebsd.org (Postfix) with ESMTPSA id 4ThwJ34prsz1X1F; Sat, 24 Feb 2024 18:24:03 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from [IPv6:::1] (2a02-8428-078f-2201-b872-d62a-3058-d3fb.rev.sfr.net [IPv6:2a02:8428:78f:2201:b872:d62a:3058:d3fb]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by aniel.nours.eu (Postfix) with ESMTPSA id 4CF6CF24E6; Sat, 24 Feb 2024 19:24:01 +0100 (CET) Date: Sat, 24 Feb 2024 19:24:01 +0100 From: Baptiste Daroussin To: Richard Scheffenegger , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: =?US-ASCII?Q?Re=3A_git=3A_f74352fbcf15_-_main_-_tcp=3A_use_?= =?US-ASCII?Q?enum_for_all_congestion__control_signals?= User-Agent: K-9 Mail for Android In-Reply-To: <202402241615.41OGFcg7091756@gitrepo.freebsd.org> References: <202402241615.41OGFcg7091756@gitrepo.freebsd.org> Message-ID: List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary=----T877TB56UDSFUDD4AKM6Z78MQX4HAZ Content-Transfer-Encoding: 7bit ------T877TB56UDSFUDD4AKM6Z78MQX4HAZ Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Le 24 f=C3=A9vrier 2024 17:15:38 GMT+01:00, Richard Scheffenegger a =C3=A9crit=C2=A0: >The branch main has been updated by rscheff: > >URL: https://cgit=2EFreeBSD=2Eorg/src/commit/?id=3Df74352fbcf15341accaf5a= 92240871f98323215d > >commit f74352fbcf15341accaf5a92240871f98323215d >Author: Richard Scheffenegger >AuthorDate: 2024-02-24 15:41:31 +0000 >Commit: Richard Scheffenegger >CommitDate: 2024-02-24 15:41:48 +0000 > > tcp: use enum for all congestion control signals > =20 > Facilitate easier troubleshooting by enumerating > all congestion control signals=2E Typecast the > enum to int, when a congestion control module uses > private signals=2E > =20 > No external change=2E > =20 > Reviewed By: glebius, tuexen, #transport > Sponsored by: NetApp, Inc=2E > Differential Revision: https://reviews=2Efreebsd=2Eorg/D43838 >--- > sys/netinet/cc/cc=2Ec | 2 +- > sys/netinet/cc/cc=2Eh | 42 +++++++++++++++++++++----------------= ----- > sys/netinet/cc/cc_cdg=2Ec | 10 +++++----- > sys/netinet/cc/cc_chd=2Ec | 11 ++++++----- > sys/netinet/cc/cc_cubic=2Ec | 10 ++++++---- > sys/netinet/cc/cc_dctcp=2Ec | 10 ++++++---- > sys/netinet/cc/cc_hd=2Ec | 4 ++-- > sys/netinet/cc/cc_htcp=2Ec | 10 ++++++---- > sys/netinet/cc/cc_newreno=2Ec | 10 ++++++---- > sys/netinet/cc/cc_vegas=2Ec | 13 +++++++------ > 10 files changed, 66 insertions(+), 56 deletions(-) > >diff --git a/sys/netinet/cc/cc=2Ec b/sys/netinet/cc/cc=2Ec >index c2965b1e6a48=2E=2E9308b5f8d764 100644 >--- a/sys/netinet/cc/cc=2Ec >+++ b/sys/netinet/cc/cc=2Ec >@@ -505,7 +505,7 @@ newreno_cc_cong_signal(struct cc_var *ccv, uint32_t t= ype) > } >=20 > void >-newreno_cc_ack_received(struct cc_var *ccv, uint16_t type) >+newreno_cc_ack_received(struct cc_var *ccv, ccsignal_t type) > { > if (type =3D=3D CC_ACK && !IN_RECOVERY(CCV(ccv, t_flags)) && > (ccv->flags & CCF_CWND_LIMITED)) { >diff --git a/sys/netinet/cc/cc=2Eh b/sys/netinet/cc/cc=2Eh >index 9571da50b2c7=2E=2E5b2cb58a24a0 100644 >--- a/sys/netinet/cc/cc=2Eh >+++ b/sys/netinet/cc/cc=2Eh >@@ -121,25 +121,25 @@ struct cc_var { > #define CCF_HYSTART_CAN_SH_CWND 0x0800 /* Can hystart when going CSS ->= CA slam the cwnd */ > #define CCF_HYSTART_CONS_SSTH 0x1000 /* Should hystart use the more cons= ervative ssthresh */ >=20 >-/* ACK types passed to the ack_received() hook=2E */ >-#define CC_ACK 0x0001 /* Regular in sequence ACK=2E */ >-#define CC_DUPACK 0x0002 /* Duplicate ACK=2E */ >-#define CC_PARTIALACK 0x0004 /* Not yet=2E */ >-#define CC_SACK 0x0008 /* Not yet=2E */ >+typedef enum { >+ /* ACK types passed to the ack_received() hook=2E */ >+ CC_ACK =3D 0x0001, /* Regular in sequence ACK=2E */ >+ CC_DUPACK =3D 0x0002, /* Duplicate ACK=2E */ >+ CC_PARTIALACK =3D 0x0004, /* Not yet=2E */ >+ CC_SACK =3D 0x0008, /* Not yet=2E */ >+ /* Congestion signal types passed to the cong_signal() hook=2E */ >+ CC_ECN =3D 0x0100, /* ECN marked packet received=2E */ >+ CC_RTO =3D 0x0200, /* RTO fired=2E */ >+ CC_RTO_ERR =3D 0x0400, /* RTO fired in error=2E */ >+ CC_NDUPACK =3D 0x0800, /* Threshold of dupack's reached=2E */ >+ /* >+ * The highest order 8 bits (0x01000000 - 0x80000000) are reserved >+ * for CC algos to declare their own congestion signal types=2E >+ */ >+ CC_SIGPRIVMASK =3D 0xFF000000 /* Mask to check if sig is private=2E */ >+} ccsignal_t; > #endif /* defined(_KERNEL) || defined(_WANT_TCPCB) */ >=20 >-/* >- * Congestion signal types passed to the cong_signal() hook=2E The highe= st order 8 >- * bits (0x01000000 - 0x80000000) are reserved for CC algos to declare t= heir own >- * congestion signal types=2E >- */ >-#define CC_ECN 0x00000001 /* ECN marked packet received=2E */ >-#define CC_RTO 0x00000002 /* RTO fired=2E */ >-#define CC_RTO_ERR 0x00000004 /* RTO fired in error=2E */ >-#define CC_NDUPACK 0x00000008 /* Threshold of dupack's reached=2E */ >- >-#define CC_SIGPRIVMASK 0xFF000000 /* Mask to check if sig is private=2E = */ >- > #ifdef _KERNEL > /* > * Structure to hold data and function pointers that together represent = a >@@ -175,10 +175,10 @@ struct cc_algo { > void (*conn_init)(struct cc_var *ccv); >=20 > /* Called on receipt of an ack=2E */ >- void (*ack_received)(struct cc_var *ccv, uint16_t type); >+ void (*ack_received)(struct cc_var *ccv, ccsignal_t type); >=20 > /* Called on detection of a congestion signal=2E */ >- void (*cong_signal)(struct cc_var *ccv, uint32_t type); >+ void (*cong_signal)(struct cc_var *ccv, ccsignal_t type); >=20 > /* Called after exiting congestion recovery=2E */ > void (*post_recovery)(struct cc_var *ccv); >@@ -236,8 +236,8 @@ extern struct rwlock cc_list_lock; > */ > void newreno_cc_post_recovery(struct cc_var *); > void newreno_cc_after_idle(struct cc_var *); >-void newreno_cc_cong_signal(struct cc_var *, uint32_t ); >-void newreno_cc_ack_received(struct cc_var *, uint16_t); >+void newreno_cc_cong_signal(struct cc_var *, ccsignal_t); >+void newreno_cc_ack_received(struct cc_var *, ccsignal_t); >=20 > /* Called to temporarily keep an algo from going away during change */ > void cc_refer(struct cc_algo *algo); >diff --git a/sys/netinet/cc/cc_cdg=2Ec b/sys/netinet/cc/cc_cdg=2Ec >index 3f23c4091170=2E=2E1e9236f878d4 100644 >--- a/sys/netinet/cc/cc_cdg=2Ec >+++ b/sys/netinet/cc/cc_cdg=2Ec >@@ -221,8 +221,8 @@ static int cdg_mod_destroy(void); > static void cdg_conn_init(struct cc_var *ccv); > static int cdg_cb_init(struct cc_var *ccv, void *ptr); > static void cdg_cb_destroy(struct cc_var *ccv); >-static void cdg_cong_signal(struct cc_var *ccv, uint32_t signal_type); >-static void cdg_ack_received(struct cc_var *ccv, uint16_t ack_type); >+static void cdg_cong_signal(struct cc_var *ccv, ccsignal_t signal_type); >+static void cdg_ack_received(struct cc_var *ccv, ccsignal_t ack_type); > static size_t cdg_data_sz(void); >=20 > struct cc_algo cdg_cc_algo =3D { >@@ -450,11 +450,11 @@ cdg_window_increase(struct cc_var *ccv, int new_mea= surement) > } >=20 > static void >-cdg_cong_signal(struct cc_var *ccv, uint32_t signal_type) >+cdg_cong_signal(struct cc_var *ccv, ccsignal_t signal_type) > { > struct cdg *cdg_data =3D ccv->cc_data; >=20 >- switch(signal_type) { >+ switch((int)signal_type) { > case CC_CDG_DELAY: > CCV(ccv, snd_ssthresh) =3D cdg_window_decrease(ccv, > CCV(ccv, snd_cwnd), V_cdg_beta_delay); >@@ -571,7 +571,7 @@ calc_moving_average(struct cdg *cdg_data, long qdiff_= max, long qdiff_min) > } >=20 > static void >-cdg_ack_received(struct cc_var *ccv, uint16_t ack_type) >+cdg_ack_received(struct cc_var *ccv, ccsignal_t ack_type) > { > struct cdg *cdg_data; > struct ertt *e_t; >diff --git a/sys/netinet/cc/cc_chd=2Ec b/sys/netinet/cc/cc_chd=2Ec >index c644d9b2cdb8=2E=2E52048a7c05ae 100644 >--- a/sys/netinet/cc/cc_chd=2Ec >+++ b/sys/netinet/cc/cc_chd=2Ec >@@ -88,10 +88,10 @@ > /* Largest possible number returned by random()=2E */ > #define RANDOM_MAX INT_MAX >=20 >-static void chd_ack_received(struct cc_var *ccv, uint16_t ack_type); >+static void chd_ack_received(struct cc_var *ccv, ccsignal_t ack_type); > static void chd_cb_destroy(struct cc_var *ccv); > static int chd_cb_init(struct cc_var *ccv, void *ptr); >-static void chd_cong_signal(struct cc_var *ccv, uint32_t signal_type); >+static void chd_cong_signal(struct cc_var *ccv, ccsignal_t signal_type); > static void chd_conn_init(struct cc_var *ccv); > static int chd_mod_init(void); > static size_t chd_data_sz(void); >@@ -235,7 +235,7 @@ chd_window_increase(struct cc_var *ccv, int new_measu= rement) > * ack_type =3D=3D CC_ACK=2E > */ > static void >-chd_ack_received(struct cc_var *ccv, uint16_t ack_type) >+chd_ack_received(struct cc_var *ccv, ccsignal_t ack_type) > { > struct chd *chd_data; > struct ertt *e_t; >@@ -336,7 +336,7 @@ chd_cb_init(struct cc_var *ccv, void *ptr) > } >=20 > static void >-chd_cong_signal(struct cc_var *ccv, uint32_t signal_type) >+chd_cong_signal(struct cc_var *ccv, ccsignal_t signal_type) > { > struct ertt *e_t; > struct chd *chd_data; >@@ -346,7 +346,7 @@ chd_cong_signal(struct cc_var *ccv, uint32_t signal_t= ype) > chd_data =3D ccv->cc_data; > qdly =3D imax(e_t->rtt, chd_data->maxrtt_in_rtt) - e_t->minrtt; >=20 >- switch(signal_type) { >+ switch((int)signal_type) { > case CC_CHD_DELAY: > chd_window_decrease(ccv); /* Set new ssthresh=2E */ > CCV(ccv, snd_cwnd) =3D CCV(ccv, snd_ssthresh); >@@ -387,6 +387,7 @@ chd_cong_signal(struct cc_var *ccv, uint32_t signal_t= ype) >=20 > default: > newreno_cc_cong_signal(ccv, signal_type); >+ break; > } > } >=20 >diff --git a/sys/netinet/cc/cc_cubic=2Ec b/sys/netinet/cc/cc_cubic=2Ec >index eb1587d44427=2E=2Ea9c7592b80ca 100644 >--- a/sys/netinet/cc/cc_cubic=2Ec >+++ b/sys/netinet/cc/cc_cubic=2Ec >@@ -73,10 +73,10 @@ > #include > #include >=20 >-static void cubic_ack_received(struct cc_var *ccv, uint16_t type); >+static void cubic_ack_received(struct cc_var *ccv, ccsignal_t type); > static void cubic_cb_destroy(struct cc_var *ccv); > static int cubic_cb_init(struct cc_var *ccv, void *ptr); >-static void cubic_cong_signal(struct cc_var *ccv, uint32_t type); >+static void cubic_cong_signal(struct cc_var *ccv, ccsignal_t type); > static void cubic_conn_init(struct cc_var *ccv); > static int cubic_mod_init(void); > static void cubic_post_recovery(struct cc_var *ccv); >@@ -233,7 +233,7 @@ cubic_does_slow_start(struct cc_var *ccv, struct cubi= c *cubicd) > } >=20 > static void >-cubic_ack_received(struct cc_var *ccv, uint16_t type) >+cubic_ack_received(struct cc_var *ccv, ccsignal_t type) > { > struct cubic *cubic_data; > unsigned long W_est, W_cubic; >@@ -417,7 +417,7 @@ cubic_cb_init(struct cc_var *ccv, void *ptr) > * Perform any necessary tasks before we enter congestion recovery=2E > */ > static void >-cubic_cong_signal(struct cc_var *ccv, uint32_t type) >+cubic_cong_signal(struct cc_var *ccv, ccsignal_t type) > { > struct cubic *cubic_data; > uint32_t mss, pipe; >@@ -503,6 +503,8 @@ cubic_cong_signal(struct cc_var *ccv, uint32_t type) > cubic_data->cwnd_epoch =3D cubic_data->undo_cwnd_epoch; > cubic_data->t_epoch =3D cubic_data->undo_t_epoch; > break; >+ default: >+ break; > } > } >=20 >diff --git a/sys/netinet/cc/cc_dctcp=2Ec b/sys/netinet/cc/cc_dctcp=2Ec >index ae0a56839449=2E=2E374db98c5e60 100644 >--- a/sys/netinet/cc/cc_dctcp=2Ec >+++ b/sys/netinet/cc/cc_dctcp=2Ec >@@ -79,11 +79,11 @@ struct dctcp { > uint32_t num_cong_events; /* # of congestion events */ > }; >=20 >-static void dctcp_ack_received(struct cc_var *ccv, uint16_t type); >+static void dctcp_ack_received(struct cc_var *ccv, ccsignal_t type); > static void dctcp_after_idle(struct cc_var *ccv); > static void dctcp_cb_destroy(struct cc_var *ccv); > static int dctcp_cb_init(struct cc_var *ccv, void *ptr); >-static void dctcp_cong_signal(struct cc_var *ccv, uint32_t type); >+static void dctcp_cong_signal(struct cc_var *ccv, ccsignal_t type); > static void dctcp_conn_init(struct cc_var *ccv); > static void dctcp_post_recovery(struct cc_var *ccv); > static void dctcp_ecnpkt_handler(struct cc_var *ccv); >@@ -104,7 +104,7 @@ struct cc_algo dctcp_cc_algo =3D { > }; >=20 > static void >-dctcp_ack_received(struct cc_var *ccv, uint16_t type) >+dctcp_ack_received(struct cc_var *ccv, ccsignal_t type) > { > struct dctcp *dctcp_data; > int bytes_acked =3D 0; >@@ -237,7 +237,7 @@ dctcp_cb_init(struct cc_var *ccv, void *ptr) > * Perform any necessary tasks before we enter congestion recovery=2E > */ > static void >-dctcp_cong_signal(struct cc_var *ccv, uint32_t type) >+dctcp_cong_signal(struct cc_var *ccv, ccsignal_t type) > { > struct dctcp *dctcp_data; > uint32_t cwin, mss, pipe; >@@ -308,6 +308,8 @@ dctcp_cong_signal(struct cc_var *ccv, uint32_t type) > dctcp_data->save_sndnxt +=3D CCV(ccv, t_maxseg); > dctcp_data->num_cong_events++; > break; >+ default: >+ break; > } > } else > newreno_cc_cong_signal(ccv, type); >diff --git a/sys/netinet/cc/cc_hd=2Ec b/sys/netinet/cc/cc_hd=2Ec >index 1a8b62ccf426=2E=2E82486563f97e 100644 >--- a/sys/netinet/cc/cc_hd=2Ec >+++ b/sys/netinet/cc/cc_hd=2Ec >@@ -80,7 +80,7 @@ > /* Largest possible number returned by random()=2E */ > #define RANDOM_MAX INT_MAX >=20 >-static void hd_ack_received(struct cc_var *ccv, uint16_t ack_type); >+static void hd_ack_received(struct cc_var *ccv, ccsignal_t ack_type); > static int hd_mod_init(void); > static size_t hd_data_sz(void); >=20 >@@ -138,7 +138,7 @@ should_backoff(int qdly, int maxqdly) > * as NewReno in all other circumstances=2E > */ > static void >-hd_ack_received(struct cc_var *ccv, uint16_t ack_type) >+hd_ack_received(struct cc_var *ccv, ccsignal_t ack_type) > { > struct ertt *e_t; > int qdly; >diff --git a/sys/netinet/cc/cc_htcp=2Ec b/sys/netinet/cc/cc_htcp=2Ec >index 43224446fd84=2E=2E41c552a3bfa0 100644 >--- a/sys/netinet/cc/cc_htcp=2Ec >+++ b/sys/netinet/cc/cc_htcp=2Ec >@@ -136,10 +136,10 @@ > (((diff) / hz) * (((diff) << HTCP_ALPHA_INC_SHIFT) / (4 * hz))) \ > ) >> HTCP_ALPHA_INC_SHIFT) >=20 >-static void htcp_ack_received(struct cc_var *ccv, uint16_t type); >+static void htcp_ack_received(struct cc_var *ccv, ccsignal_t type); > static void htcp_cb_destroy(struct cc_var *ccv); > static int htcp_cb_init(struct cc_var *ccv, void *ptr); >-static void htcp_cong_signal(struct cc_var *ccv, uint32_t type); >+static void htcp_cong_signal(struct cc_var *ccv, ccsignal_t type); > static int htcp_mod_init(void); > static void htcp_post_recovery(struct cc_var *ccv); > static void htcp_recalc_alpha(struct cc_var *ccv); >@@ -190,7 +190,7 @@ struct cc_algo htcp_cc_algo =3D { > }; >=20 > static void >-htcp_ack_received(struct cc_var *ccv, uint16_t type) >+htcp_ack_received(struct cc_var *ccv, ccsignal_t type) > { > struct htcp *htcp_data; >=20 >@@ -278,7 +278,7 @@ htcp_cb_init(struct cc_var *ccv, void *ptr) > * Perform any necessary tasks before we enter congestion recovery=2E > */ > static void >-htcp_cong_signal(struct cc_var *ccv, uint32_t type) >+htcp_cong_signal(struct cc_var *ccv, ccsignal_t type) > { > struct htcp *htcp_data; > uint32_t mss, pipe; >@@ -345,6 +345,8 @@ htcp_cong_signal(struct cc_var *ccv, uint32_t type) > if (CCV(ccv, t_rxtshift) >=3D 2) > htcp_data->t_last_cong =3D ticks; > break; >+ default: >+ break; > } > } >=20 >diff --git a/sys/netinet/cc/cc_newreno=2Ec b/sys/netinet/cc/cc_newreno=2E= c >index 71f2764ef4bc=2E=2Eaa20e2c64f7d 100644 >--- a/sys/netinet/cc/cc_newreno=2Ec >+++ b/sys/netinet/cc/cc_newreno=2Ec >@@ -84,9 +84,9 @@ > #include >=20 > static void newreno_cb_destroy(struct cc_var *ccv); >-static void newreno_ack_received(struct cc_var *ccv, uint16_t type); >+static void newreno_ack_received(struct cc_var *ccv, ccsignal_t type); > static void newreno_after_idle(struct cc_var *ccv); >-static void newreno_cong_signal(struct cc_var *ccv, uint32_t type); >+static void newreno_cong_signal(struct cc_var *ccv, ccsignal_t type); > static int newreno_ctl_output(struct cc_var *ccv, struct sockopt *sopt, = void *buf); > static void newreno_newround(struct cc_var *ccv, uint32_t round_cnt); > static void newreno_rttsample(struct cc_var *ccv, uint32_t usec_rtt, uin= t32_t rxtcnt, uint32_t fas); >@@ -212,7 +212,7 @@ newreno_cb_destroy(struct cc_var *ccv) > } >=20 > static void >-newreno_ack_received(struct cc_var *ccv, uint16_t type) >+newreno_ack_received(struct cc_var *ccv, ccsignal_t type) > { > struct newreno *nreno; >=20 >@@ -363,7 +363,7 @@ newreno_after_idle(struct cc_var *ccv) > * Perform any necessary tasks before we enter congestion recovery=2E > */ > static void >-newreno_cong_signal(struct cc_var *ccv, uint32_t type) >+newreno_cong_signal(struct cc_var *ccv, ccsignal_t type) > { > struct newreno *nreno; > uint32_t beta, beta_ecn, cwin, factor, mss, pipe; >@@ -442,6 +442,8 @@ newreno_cong_signal(struct cc_var *ccv, uint32_t type= ) > } > CCV(ccv, snd_cwnd) =3D mss; > break; >+ default: >+ break; > } > } >=20 >diff --git a/sys/netinet/cc/cc_vegas=2Ec b/sys/netinet/cc/cc_vegas=2Ec >index aac9c9ce77ff=2E=2Eecd42c1a0f53 100644 >--- a/sys/netinet/cc/cc_vegas=2Ec >+++ b/sys/netinet/cc/cc_vegas=2Ec >@@ -84,12 +84,12 @@ > * Private signal type for rate based congestion signal=2E > * See for appropriate bit-range to use for private sig= nals=2E > */ >-#define CC_VEGAS_RATE 0x01000000 >+#define CC_VEGAS_RATE 0x04000000 >=20 >-static void vegas_ack_received(struct cc_var *ccv, uint16_t ack_type); >+static void vegas_ack_received(struct cc_var *ccv, ccsignal_t ack_type); > static void vegas_cb_destroy(struct cc_var *ccv); > static int vegas_cb_init(struct cc_var *ccv, void *ptr); >-static void vegas_cong_signal(struct cc_var *ccv, uint32_t signal_type); >+static void vegas_cong_signal(struct cc_var *ccv, ccsignal_t signal_type= ); > static void vegas_conn_init(struct cc_var *ccv); > static int vegas_mod_init(void); > static size_t vegas_data_sz(void); >@@ -124,7 +124,7 @@ struct cc_algo vegas_cc_algo =3D { > * has been used=2E > */ > static void >-vegas_ack_received(struct cc_var *ccv, uint16_t ack_type) >+vegas_ack_received(struct cc_var *ccv, ccsignal_t ack_type) > { > struct ertt *e_t; > struct vegas *vegas_data; >@@ -203,7 +203,7 @@ vegas_cb_init(struct cc_var *ccv, void *ptr) > * handled here, otherwise it falls back to newreno's congestion handlin= g=2E > */ > static void >-vegas_cong_signal(struct cc_var *ccv, uint32_t signal_type) >+vegas_cong_signal(struct cc_var *ccv, ccsignal_t signal_type) > { > struct vegas *vegas_data; > int presignalrecov; >@@ -215,7 +215,7 @@ vegas_cong_signal(struct cc_var *ccv, uint32_t signal= _type) > else > presignalrecov =3D 0; >=20 >- switch(signal_type) { >+ switch((int)signal_type) { > case CC_VEGAS_RATE: > if (!IN_RECOVERY(CCV(ccv, t_flags))) { > CCV(ccv, snd_cwnd) =3D max(2 * CCV(ccv, t_maxseg), >@@ -228,6 +228,7 @@ vegas_cong_signal(struct cc_var *ccv, uint32_t signal= _type) >=20 > default: > newreno_cc_cong_signal(ccv, signal_type); >+ break; > } >=20 > if (IN_RECOVERY(CCV(ccv, t_flags)) && !presignalrecov) Buildworld is now broken for all arches (at least incremental build) Among the errors /home/bapt/worktrees/main/lib/libstats/=2E=2E/=2E=2E/sys/netinet/tcp_stats= =2Ec:138:32: error: use of undeclared identifier 'CC_NDUPACK' ------T877TB56UDSFUDD4AKM6Z78MQX4HAZ Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable
Le 24= f=C3=A9vrier 2024 17:15:38 GMT+01:00, Richard Scheffenegger <rscheff@Fr= eeBSD=2Eorg> a =C3=A9crit=C2=A0:
The branch main has been updated b= y rscheff:

URL: https://cgit=2EFreeBSD=2Eorg= /src/commit/?id=3Df74352fbcf15341accaf5a92240871f98323215d

commi= t f74352fbcf15341accaf5a92240871f98323215d
Author: Richard Scheffene= gger <rscheff@FreeBSD=2Eorg>
AuthorDate: 2024-02-24 15:41:31 +0000=
Commit: Richard Scheffenegger <rscheff@FreeBSD=2Eorg>
Comm= itDate: 2024-02-24 15:41:48 +0000

tcp: use enum for all congesti= on control signals

Facilitate easier troubleshooting by enum= erating
all congestion control signals=2E Typecast the
enum t= o int, when a congestion control module uses
private signals=2E
=
No external change=2E

Reviewed By: gle= bius, tuexen, #transport
Sponsored by: NetApp, Inc=2E
= Differential Revision: https://reviews=2Efreebsd=2Eorg/D43838
sys/netinet/cc/cc=2Ec = | 2 +-
sys/netinet/cc/cc=2Eh | 42 +++++++++++++++++++++--= -------------------
sys/netinet/cc/cc_cdg=2Ec | 10 +++++-----
s= ys/netinet/cc/cc_chd=2Ec | 11 ++++++-----
sys/netinet/cc/cc_cubic= =2Ec | 10 ++++++----
sys/netinet/cc/cc_dctcp=2Ec | 10 ++++++---- sys/netinet/cc/cc_hd=2Ec | 4 ++--
sys/netinet/cc/cc_htcp=2Ec = | 10 ++++++----
sys/netinet/cc/cc_newreno=2Ec | 10 ++++++----
sys/= netinet/cc/cc_vegas=2Ec | 13 +++++++------
10 files changed, 66 inser= tions(+), 56 deletions(-)

diff --git a/sys/netinet/cc/cc=2Ec b/sys/n= etinet/cc/cc=2Ec
index c2965b1e6a48=2E=2E9308b5f8d764 100644
--- a/sy= s/netinet/cc/cc=2Ec
+++ b/sys/netinet/cc/cc=2Ec
@@ -505,7 +505,7 @@ n= ewreno_cc_cong_signal(struct cc_var *ccv, uint32_t type)
}

voi= d
-newreno_cc_ack_received(struct cc_var *ccv, uint16_t type)
+newren= o_cc_ack_received(struct cc_var *ccv, ccsignal_t type)
{
if (type = =3D=3D CC_ACK && !IN_RECOVERY(CCV(ccv, t_flags)) &&
= (ccv->flags & CCF_CWND_LIMITED)) {
diff --git a/sys/netinet/cc/= cc=2Eh b/sys/netinet/cc/cc=2Eh
index 9571da50b2c7=2E=2E5b2cb58a24a0 1006= 44
--- a/sys/netinet/cc/cc=2Eh
+++ b/sys/netinet/cc/cc=2Eh
@@ -121= ,25 +121,25 @@ struct cc_var {
#define CCF_HYSTART_CAN_SH_CWND 0x0800 = /* Can hystart when going CSS -> CA slam the cwnd */
#define CCF_HYS= TART_CONS_SSTH 0x1000 /* Should hystart use the more conservative ssthresh = */

-/* ACK types passed to the ack_received() hook=2E */
-#defin= e CC_ACK 0x0001 /* Regular in sequence ACK=2E */
-#define CC_DUPACK 0x0= 002 /* Duplicate ACK=2E */
-#define CC_PARTIALACK 0x0004 /* Not yet=2E *= /
-#define CC_SACK 0x0008 /* Not yet=2E */
+typedef enum {
+ /* A= CK types passed to the ack_received() hook=2E */
+ CC_ACK =3D 0x0001, /*= Regular in sequence ACK=2E */
+ CC_DUPACK =3D 0x0002, /* Duplicate ACK= =2E */
+ CC_PARTIALACK =3D 0x0004, /* Not yet=2E */
+ CC_SACK =3D 0x0= 008, /* Not yet=2E */
+ /* Congestion signal types passed to the cong_si= gnal() hook=2E */
+ CC_ECN =3D 0x0100, /* ECN marked packet received=2E = */
+ CC_RTO =3D 0x0200, /* RTO fired=2E */
+ CC_RTO_ERR =3D 0x0400, /= * RTO fired in error=2E */
+ CC_NDUPACK =3D 0x0800, /* Threshold of dupa= ck's reached=2E */
+ /*
+ * The highest order 8 bits (0x01000000 - 0= x80000000) are reserved
+ * for CC algos to declare their own congestio= n signal types=2E
+ */
+ CC_SIGPRIVMASK =3D 0xFF000000 /* Mask to ch= eck if sig is private=2E */
+} ccsignal_t;
#endif /* defined(_KERNEL= ) || defined(_WANT_TCPCB) */

-/*
- * Congestion signal types pas= sed to the cong_signal() hook=2E The highest order 8
- * bits (0x0100000= 0 - 0x80000000) are reserved for CC algos to declare their own
- * conge= stion signal types=2E
- */
-#define CC_ECN 0x00000001 /* ECN marked = packet received=2E */
-#define CC_RTO 0x00000002 /* RTO fired=2E */
= -#define CC_RTO_ERR 0x00000004 /* RTO fired in error=2E */
-#define CC_N= DUPACK 0x00000008 /* Threshold of dupack's reached=2E */
-
-#define C= C_SIGPRIVMASK 0xFF000000 /* Mask to check if sig is private=2E */
-
= #ifdef _KERNEL
/*
* Structure to hold data and function pointers t= hat together represent a
@@ -175,10 +175,10 @@ struct cc_algo {
voi= d (*conn_init)(struct cc_var *ccv);

/* Called on receipt of an ac= k=2E */
- void (*ack_received)(struct cc_var *ccv, uint16_t type);
+ = void (*ack_received)(struct cc_var *ccv, ccsignal_t type);

/* Cal= led on detection of a congestion signal=2E */
- void (*cong_signal)(stru= ct cc_var *ccv, uint32_t type);
+ void (*cong_signal)(struct cc_var *ccv= , ccsignal_t type);

/* Called after exiting congestion recovery= =2E */
void (*post_recovery)(struct cc_var *ccv);
@@ -236,8 +236,8 = @@ extern struct rwlock cc_list_lock;
*/
void newreno_cc_post_reco= very(struct cc_var *);
void newreno_cc_after_idle(struct cc_var *);
= -void newreno_cc_cong_signal(struct cc_var *, uint32_t );
-void newreno_= cc_ack_received(struct cc_var *, uint16_t);
+void newreno_cc_cong_signal= (struct cc_var *, ccsignal_t);
+void newreno_cc_ack_received(struct cc_v= ar *, ccsignal_t);

/* Called to temporarily keep an algo from goin= g away during change */
void cc_refer(struct cc_algo *algo);
diff --= git a/sys/netinet/cc/cc_cdg=2Ec b/sys/netinet/cc/cc_cdg=2Ec
index 3f23c4= 091170=2E=2E1e9236f878d4 100644
--- a/sys/netinet/cc/cc_cdg=2Ec
+++ b= /sys/netinet/cc/cc_cdg=2Ec
@@ -221,8 +221,8 @@ static int cdg_mod_destro= y(void);
static void cdg_conn_init(struct cc_var *ccv);
static int = cdg_cb_init(struct cc_var *ccv, void *ptr);
static void cdg_cb_destroy(= struct cc_var *ccv);
-static void cdg_cong_signal(struct cc_var *ccv, ui= nt32_t signal_type);
-static void cdg_ack_received(struct cc_var *ccv, u= int16_t ack_type);
+static void cdg_cong_signal(struct cc_var *ccv, ccsi= gnal_t signal_type);
+static void cdg_ack_received(struct cc_var *ccv, c= csignal_t ack_type);
static size_t cdg_data_sz(void);

struct c= c_algo cdg_cc_algo =3D {
@@ -450,11 +450,11 @@ cdg_window_increase(struc= t cc_var *ccv, int new_measurement)
}

static void
-cdg_cong= _signal(struct cc_var *ccv, uint32_t signal_type)
+cdg_cong_signal(struc= t cc_var *ccv, ccsignal_t signal_type)
{
struct cdg *cdg_data =3D = ccv->cc_data;

- switch(signal_type) {
+ switch((int)signal_ty= pe) {
case CC_CDG_DELAY:
CCV(ccv, snd_ssthresh) =3D cdg_window_d= ecrease(ccv,
CCV(ccv, snd_cwnd), V_cdg_beta_delay);
@@ -571,7 = +571,7 @@ calc_moving_average(struct cdg *cdg_data, long qdiff_max, long qd= iff_min)
}

static void
-cdg_ack_received(struct cc_var *ccv= , uint16_t ack_type)
+cdg_ack_received(struct cc_var *ccv, ccsignal_t ac= k_type)
{
struct cdg *cdg_data;
struct ertt *e_t;
diff --g= it a/sys/netinet/cc/cc_chd=2Ec b/sys/netinet/cc/cc_chd=2Ec
index c644d9b= 2cdb8=2E=2E52048a7c05ae 100644
--- a/sys/netinet/cc/cc_chd=2Ec
+++ b/= sys/netinet/cc/cc_chd=2Ec
@@ -88,10 +88,10 @@
/* Largest possible nu= mber returned by random()=2E */
#define RANDOM_MAX INT_MAX

-sta= tic void chd_ack_received(struct cc_var *ccv, uint16_t ack_type);
+stati= c void chd_ack_received(struct cc_var *ccv, ccsignal_t ack_type);
stati= c void chd_cb_destroy(struct cc_var *ccv);
static int chd_cb_init(struc= t cc_var *ccv, void *ptr);
-static void chd_cong_signal(struct cc_var *c= cv, uint32_t signal_type);
+static void chd_cong_signal(struct cc_var *c= cv, ccsignal_t signal_type);
static void chd_conn_init(struct cc_var *c= cv);
static int chd_mod_init(void);
static size_t chd_data_sz(void)= ;
@@ -235,7 +235,7 @@ chd_window_increase(struct cc_var *ccv, int new_me= asurement)
* ack_type =3D=3D CC_ACK=2E
*/
static void
-chd= _ack_received(struct cc_var *ccv, uint16_t ack_type)
+chd_ack_received(s= truct cc_var *ccv, ccsignal_t ack_type)
{
struct chd *chd_data; struct ertt *e_t;
@@ -336,7 +336,7 @@ chd_cb_init(struct cc_var *ccv,= void *ptr)
}

static void
-chd_cong_signal(struct cc_var *c= cv, uint32_t signal_type)
+chd_cong_signal(struct cc_var *ccv, ccsignal_= t signal_type)
{
struct ertt *e_t;
struct chd *chd_data;
@= @ -346,7 +346,7 @@ chd_cong_signal(struct cc_var *ccv, uint32_t signal_type= )
chd_data =3D ccv->cc_data;
qdly =3D imax(e_t->rtt, chd_da= ta->maxrtt_in_rtt) - e_t->minrtt;

- switch(signal_type) {
= + switch((int)signal_type) {
case CC_CHD_DELAY:
chd_window_decre= ase(ccv); /* Set new ssthresh=2E */
CCV(ccv, snd_cwnd) =3D CCV(ccv, s= nd_ssthresh);
@@ -387,6 +387,7 @@ chd_cong_signal(struct cc_var *ccv, ui= nt32_t signal_type)

default:
newreno_cc_cong_signal(ccv, si= gnal_type);
+ break;
}
}

diff --git a/sys/netinet/cc/c= c_cubic=2Ec b/sys/netinet/cc/cc_cubic=2Ec
index eb1587d44427=2E=2Ea9c759= 2b80ca 100644
--- a/sys/netinet/cc/cc_cubic=2Ec
+++ b/sys/netinet/cc/= cc_cubic=2Ec
@@ -73,10 +73,10 @@
#include <netinet/cc/cc_cubic=2E= h>
#include <netinet/cc/cc_module=2Eh>

-static void cu= bic_ack_received(struct cc_var *ccv, uint16_t type);
+static void cubic_= ack_received(struct cc_var *ccv, ccsignal_t type);
static void cubic_cb= _destroy(struct cc_var *ccv);
static int cubic_cb_init(struct cc_var *c= cv, void *ptr);
-static void cubic_cong_signal(struct cc_var *ccv, uint3= 2_t type);
+static void cubic_cong_signal(struct cc_var *ccv, ccsignal_t= type);
static void cubic_conn_init(struct cc_var *ccv);
static int= cubic_mod_init(void);
static void cubic_post_recovery(struct cc_var *c= cv);
@@ -233,7 +233,7 @@ cubic_does_slow_start(struct cc_var *ccv, struc= t cubic *cubicd)
}

static void
-cubic_ack_received(struct c= c_var *ccv, uint16_t type)
+cubic_ack_received(struct cc_var *ccv, ccsig= nal_t type)
{
struct cubic *cubic_data;
unsigned long W_est, = W_cubic;
@@ -417,7 +417,7 @@ cubic_cb_init(struct cc_var *ccv, void *ptr= )
* Perform any necessary tasks before we enter congestion recovery=2E=
*/
static void
-cubic_cong_signal(struct cc_var *ccv, uint32_t= type)
+cubic_cong_signal(struct cc_var *ccv, ccsignal_t type)
{
= struct cubic *cubic_data;
uint32_t mss, pipe;
@@ -503,6 +503,8 @@= cubic_cong_signal(struct cc_var *ccv, uint32_t type)
cubic_data->= cwnd_epoch =3D cubic_data->undo_cwnd_epoch;
cubic_data->t_epoch= =3D cubic_data->undo_t_epoch;
break;
+ default:
+ break; }
}

diff --git a/sys/netinet/cc/cc_dctcp=2Ec b/sys/netinet/= cc/cc_dctcp=2Ec
index ae0a56839449=2E=2E374db98c5e60 100644
--- a/sys= /netinet/cc/cc_dctcp=2Ec
+++ b/sys/netinet/cc/cc_dctcp=2Ec
@@ -79,11 = +79,11 @@ struct dctcp {
uint32_t num_cong_events; /* # of congestion = events */
};

-static void dctcp_ack_received(struct cc_var *ccv= , uint16_t type);
+static void dctcp_ack_received(struct cc_var *ccv, cc= signal_t type);
static void dctcp_after_idle(struct cc_var *ccv);
s= tatic void dctcp_cb_destroy(struct cc_var *ccv);
static int dctcp_cb_in= it(struct cc_var *ccv, void *ptr);
-static void dctcp_cong_signal(struct= cc_var *ccv, uint32_t type);
+static void dctcp_cong_signal(struct cc_v= ar *ccv, ccsignal_t type);
static void dctcp_conn_init(struct cc_var *c= cv);
static void dctcp_post_recovery(struct cc_var *ccv);
static vo= id dctcp_ecnpkt_handler(struct cc_var *ccv);
@@ -104,7 +104,7 @@ struct = cc_algo dctcp_cc_algo =3D {
};

static void
-dctcp_ack_recei= ved(struct cc_var *ccv, uint16_t type)
+dctcp_ack_received(struct cc_var= *ccv, ccsignal_t type)
{
struct dctcp *dctcp_data;
int bytes= _acked =3D 0;
@@ -237,7 +237,7 @@ dctcp_cb_init(struct cc_var *ccv, void= *ptr)
* Perform any necessary tasks before we enter congestion recove= ry=2E
*/
static void
-dctcp_cong_signal(struct cc_var *ccv, uin= t32_t type)
+dctcp_cong_signal(struct cc_var *ccv, ccsignal_t type)
= {
struct dctcp *dctcp_data;
uint32_t cwin, mss, pipe;
@@ -308,= 6 +308,8 @@ dctcp_cong_signal(struct cc_var *ccv, uint32_t type)
dct= cp_data->save_sndnxt +=3D CCV(ccv, t_maxseg);
dctcp_data->num_= cong_events++;
break;
+ default:
+ break;
}
} el= se
newreno_cc_cong_signal(ccv, type);
diff --git a/sys/netinet/cc/= cc_hd=2Ec b/sys/netinet/cc/cc_hd=2Ec
index 1a8b62ccf426=2E=2E82486563f97= e 100644
--- a/sys/netinet/cc/cc_hd=2Ec
+++ b/sys/netinet/cc/cc_hd=2E= c
@@ -80,7 +80,7 @@
/* Largest possible number returned by random()= =2E */
#define RANDOM_MAX INT_MAX

-static void hd_ack_received(= struct cc_var *ccv, uint16_t ack_type);
+static void hd_ack_received(str= uct cc_var *ccv, ccsignal_t ack_type);
static int hd_mod_init(void); static size_t hd_data_sz(void);

@@ -138,7 +138,7 @@ should_backof= f(int qdly, int maxqdly)
* as NewReno in all other circumstances=2E */
static void
-hd_ack_received(struct cc_var *ccv, uint16_t ack_= type)
+hd_ack_received(struct cc_var *ccv, ccsignal_t ack_type)
{ struct ertt *e_t;
int qdly;
diff --git a/sys/netinet/cc/cc_htcp= =2Ec b/sys/netinet/cc/cc_htcp=2Ec
index 43224446fd84=2E=2E41c552a3bfa0 1= 00644
--- a/sys/netinet/cc/cc_htcp=2Ec
+++ b/sys/netinet/cc/cc_htcp= =2Ec
@@ -136,10 +136,10 @@
(((diff) / hz) * (((diff) << HTCP_= ALPHA_INC_SHIFT) / (4 * hz))) \
) >> HTCP_ALPHA_INC_SHIFT)
-static void htcp_ack_received(struct cc_var *ccv, uint16_t type);
+st= atic void htcp_ack_received(struct cc_var *ccv, ccsignal_t type);
stati= c void htcp_cb_destroy(struct cc_var *ccv);
static int htcp_cb_init(str= uct cc_var *ccv, void *ptr);
-static void htcp_cong_signal(struct cc_var= *ccv, uint32_t type);
+static void htcp_cong_signal(struct cc_var *ccv,= ccsignal_t type);
static int htcp_mod_init(void);
static void htcp= _post_recovery(struct cc_var *ccv);
static void htcp_recalc_alpha(struc= t cc_var *ccv);
@@ -190,7 +190,7 @@ struct cc_algo htcp_cc_algo =3D { };

static void
-htcp_ack_received(struct cc_var *ccv, uint16_= t type)
+htcp_ack_received(struct cc_var *ccv, ccsignal_t type)
{ struct htcp *htcp_data;

@@ -278,7 +278,7 @@ htcp_cb_init(struct = cc_var *ccv, void *ptr)
* Perform any necessary tasks before we enter = congestion recovery=2E
*/
static void
-htcp_cong_signal(struct = cc_var *ccv, uint32_t type)
+htcp_cong_signal(struct cc_var *ccv, ccsign= al_t type)
{
struct htcp *htcp_data;
uint32_t mss, pipe;
@= @ -345,6 +345,8 @@ htcp_cong_signal(struct cc_var *ccv, uint32_t type)
= if (CCV(ccv, t_rxtshift) >=3D 2)
htcp_data->t_last_cong =3D = ticks;
break;
+ default:
+ break;
}
}

diff --= git a/sys/netinet/cc/cc_newreno=2Ec b/sys/netinet/cc/cc_newreno=2Ec
inde= x 71f2764ef4bc=2E=2Eaa20e2c64f7d 100644
--- a/sys/netinet/cc/cc_newreno= =2Ec
+++ b/sys/netinet/cc/cc_newreno=2Ec
@@ -84,9 +84,9 @@
#inclu= de <netinet/cc/cc_newreno=2Eh>

static void newreno_cb_destro= y(struct cc_var *ccv);
-static void newreno_ack_received(struct cc_var *= ccv, uint16_t type);
+static void newreno_ack_received(struct cc_var *cc= v, ccsignal_t type);
static void newreno_after_idle(struct cc_var *ccv)= ;
-static void newreno_cong_signal(struct cc_var *ccv, uint32_t type);+static void newreno_cong_signal(struct cc_var *ccv, ccsignal_t type); static int newreno_ctl_output(struct cc_var *ccv, struct sockopt *sopt, v= oid *buf);
static void newreno_newround(struct cc_var *ccv, uint32_t ro= und_cnt);
static void newreno_rttsample(struct cc_var *ccv, uint32_t us= ec_rtt, uint32_t rxtcnt, uint32_t fas);
@@ -212,7 +212,7 @@ newreno_cb_d= estroy(struct cc_var *ccv)
}

static void
-newreno_ack_recei= ved(struct cc_var *ccv, uint16_t type)
+newreno_ack_received(struct cc_v= ar *ccv, ccsignal_t type)
{
struct newreno *nreno;

@@ -363= ,7 +363,7 @@ newreno_after_idle(struct cc_var *ccv)
* Perform any nece= ssary tasks before we enter congestion recovery=2E
*/
static void<= br>-newreno_cong_signal(struct cc_var *ccv, uint32_t type)
+newreno_cong= _signal(struct cc_var *ccv, ccsignal_t type)
{
struct newreno *nre= no;
uint32_t beta, beta_ecn, cwin, factor, mss, pipe;
@@ -442,6 +44= 2,8 @@ newreno_cong_signal(struct cc_var *ccv, uint32_t type)
}
= CCV(ccv, snd_cwnd) =3D mss;
break;
+ default:
+ break;
}=
}

diff --git a/sys/netinet/cc/cc_vegas=2Ec b/sys/netinet/cc/cc= _vegas=2Ec
index aac9c9ce77ff=2E=2Eecd42c1a0f53 100644
--- a/sys/neti= net/cc/cc_vegas=2Ec
+++ b/sys/netinet/cc/cc_vegas=2Ec
@@ -84,12 +84,1= 2 @@
* Private signal type for rate based congestion signal=2E
* = See <netinet/cc=2Eh> for appropriate bit-range to use for private sig= nals=2E
*/
-#define CC_VEGAS_RATE 0x01000000
+#define CC_VEGAS_R= ATE 0x04000000

-static void vegas_ack_received(struct cc_var *ccv, = uint16_t ack_type);
+static void vegas_ack_received(struct cc_var *ccv, = ccsignal_t ack_type);
static void vegas_cb_destroy(struct cc_var *ccv);=
static int vegas_cb_init(struct cc_var *ccv, void *ptr);
-static vo= id vegas_cong_signal(struct cc_var *ccv, uint32_t signal_type);
+static = void vegas_cong_signal(struct cc_var *ccv, ccsignal_t signal_type);
sta= tic void vegas_conn_init(struct cc_var *ccv);
static int vegas_mod_init= (void);
static size_t vegas_data_sz(void);
@@ -124,7 +124,7 @@ struc= t cc_algo vegas_cc_algo =3D {
* has been used=2E
*/
static vo= id
-vegas_ack_received(struct cc_var *ccv, uint16_t ack_type)
+vegas_= ack_received(struct cc_var *ccv, ccsignal_t ack_type)
{
struct ert= t *e_t;
struct vegas *vegas_data;
@@ -203,7 +203,7 @@ vegas_cb_init= (struct cc_var *ccv, void *ptr)
* handled here, otherwise it falls bac= k to newreno's congestion handling=2E
*/
static void
-vegas_con= g_signal(struct cc_var *ccv, uint32_t signal_type)
+vegas_cong_signal(st= ruct cc_var *ccv, ccsignal_t signal_type)
{
struct vegas *vegas_da= ta;
int presignalrecov;
@@ -215,7 +215,7 @@ vegas_cong_signal(struc= t cc_var *ccv, uint32_t signal_type)
else
presignalrecov =3D 0;<= br>
- switch(signal_type) {
+ switch((int)signal_type) {
case C= C_VEGAS_RATE:
if (!IN_RECOVERY(CCV(ccv, t_flags))) {
CCV(ccv, = snd_cwnd) =3D max(2 * CCV(ccv, t_maxseg),
@@ -228,6 +228,7 @@ vegas_cong= _signal(struct cc_var *ccv, uint32_t signal_type)

default:
= newreno_cc_cong_signal(ccv, signal_type);
+ break;
}

if = (IN_RECOVERY(CCV(ccv, t_flags)) && !presignalrecov)
=

Buildworld is now br= oken for all arches (at least incremental build)

Among the errors
/home/bapt/worktrees/main/lib/libstats/=2E=2E/=2E=2E/sys/netinet/tcp_s= tats=2Ec:138:32: error: use of undeclared identifier 'CC_NDUPACK'

------T877TB56UDSFUDD4AKM6Z78MQX4HAZ--