Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 Feb 2024 19:24:01 +0100
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        Richard Scheffenegger <rscheff@FreeBSD.org>, 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?=
Message-ID:  <A1F250AD-27F6-459F-A8FA-29EF8CF8EE44@FreeBSD.org>
In-Reply-To: <202402241615.41OGFcg7091756@gitrepo.freebsd.org>
References:  <202402241615.41OGFcg7091756@gitrepo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
------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 <rscheff@=
FreeBSD=2Eorg> 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 <rscheff@FreeBSD=2Eorg>
>AuthorDate: 2024-02-24 15:41:31 +0000
>Commit:     Richard Scheffenegger <rscheff@FreeBSD=2Eorg>
>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 <netinet/cc/cc_cubic=2Eh>
> #include <netinet/cc/cc_module=2Eh>
>=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 <netinet/cc/cc_newreno=2Eh>
>=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 <netinet/cc=2Eh> 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

<html><head></head><body><div class=3D"gmail_quote"><div dir=3D"auto">Le 24=
 f=C3=A9vrier 2024 17:15:38 GMT+01:00, Richard Scheffenegger &lt;rscheff@Fr=
eeBSD=2Eorg&gt; a =C3=A9crit=C2=A0:</div><blockquote class=3D"gmail_quote" =
style=3D"margin: 0pt 0pt 0pt 0=2E8ex; border-left: 1px solid rgb(204, 204, =
204); padding-left: 1ex;">
<pre class=3D"k9mail"><div dir=3D"auto">The branch main has been updated b=
y rscheff:<br><br>URL: <a href=3D"https://cgit=2EFreeBSD=2Eorg/src/commit/?=
id=3Df74352fbcf15341accaf5a92240871f98323215d">https://cgit=2EFreeBSD=2Eorg=
/src/commit/?id=3Df74352fbcf15341accaf5a92240871f98323215d</a><br><br>commi=
t f74352fbcf15341accaf5a92240871f98323215d<br>Author:     Richard Scheffene=
gger &lt;rscheff@FreeBSD=2Eorg&gt;<br>AuthorDate: 2024-02-24 15:41:31 +0000=
<br>Commit:     Richard Scheffenegger &lt;rscheff@FreeBSD=2Eorg&gt;<br>Comm=
itDate: 2024-02-24 15:41:48 +0000<br><br>    tcp: use enum for all congesti=
on control signals<br>    <br>    Facilitate easier troubleshooting by enum=
erating<br>    all congestion control signals=2E Typecast the<br>    enum t=
o int, when a congestion control module uses<br>    private signals=2E<br> =
   <br>    No external change=2E<br>    <br>    Reviewed By:            gle=
bius, tuexen, #transport<br>    Sponsored by:           NetApp, Inc=2E<br> =
   Differential Revision:  <a href=3D"https://reviews=2Efreebsd=2Eorg/D4383=
8">https://reviews=2Efreebsd=2Eorg/D43838</a><hr>; sys/netinet/cc/cc=2Ec    =
     |  2 +-<br> sys/netinet/cc/cc=2Eh         | 42 +++++++++++++++++++++--=
-------------------<br> sys/netinet/cc/cc_cdg=2Ec     | 10 +++++-----<br> s=
ys/netinet/cc/cc_chd=2Ec     | 11 ++++++-----<br> sys/netinet/cc/cc_cubic=
=2Ec   | 10 ++++++----<br> sys/netinet/cc/cc_dctcp=2Ec   | 10 ++++++----<br=
> sys/netinet/cc/cc_hd=2Ec      |  4 ++--<br> sys/netinet/cc/cc_htcp=2Ec   =
 | 10 ++++++----<br> sys/netinet/cc/cc_newreno=2Ec | 10 ++++++----<br> sys/=
netinet/cc/cc_vegas=2Ec   | 13 +++++++------<br> 10 files changed, 66 inser=
tions(+), 56 deletions(-)<br><br>diff --git a/sys/netinet/cc/cc=2Ec b/sys/n=
etinet/cc/cc=2Ec<br>index c2965b1e6a48=2E=2E9308b5f8d764 100644<br>--- a/sy=
s/netinet/cc/cc=2Ec<br>+++ b/sys/netinet/cc/cc=2Ec<br>@@ -505,7 +505,7 @@ n=
ewreno_cc_cong_signal(struct cc_var *ccv, uint32_t type)<br> }<br> <br> voi=
d<br>-newreno_cc_ack_received(struct cc_var *ccv, uint16_t type)<br>+newren=
o_cc_ack_received(struct cc_var *ccv, ccsignal_t type)<br> {<br> 	if (type =
=3D=3D CC_ACK &amp;&amp; !IN_RECOVERY(CCV(ccv, t_flags)) &amp;&amp;<br> 	  =
  (ccv-&gt;flags &amp; CCF_CWND_LIMITED)) {<br>diff --git a/sys/netinet/cc/=
cc=2Eh b/sys/netinet/cc/cc=2Eh<br>index 9571da50b2c7=2E=2E5b2cb58a24a0 1006=
44<br>--- a/sys/netinet/cc/cc=2Eh<br>+++ b/sys/netinet/cc/cc=2Eh<br>@@ -121=
,25 +121,25 @@ struct cc_var {<br> #define CCF_HYSTART_CAN_SH_CWND	0x0800  =
/* Can hystart when going CSS -&gt; CA slam the cwnd */<br> #define CCF_HYS=
TART_CONS_SSTH	0x1000	/* Should hystart use the more conservative ssthresh =
*/<br> <br>-/* ACK types passed to the ack_received() hook=2E */<br>-#defin=
e	CC_ACK		0x0001	/* Regular in sequence ACK=2E */<br>-#define	CC_DUPACK	0x0=
002	/* Duplicate ACK=2E */<br>-#define	CC_PARTIALACK	0x0004	/* Not yet=2E *=
/<br>-#define	CC_SACK		0x0008	/* Not yet=2E */<br>+typedef enum {<br>+	/* A=
CK types passed to the ack_received() hook=2E */<br>+	CC_ACK =3D	0x0001,	/*=
 Regular in sequence ACK=2E */<br>+	CC_DUPACK =3D	0x0002,	/* Duplicate ACK=
=2E */<br>+	CC_PARTIALACK =3D	0x0004,	/* Not yet=2E */<br>+	CC_SACK =3D	0x0=
008,	/* Not yet=2E */<br>+	/* Congestion signal types passed to the cong_si=
gnal() hook=2E */<br>+	CC_ECN =3D	0x0100,	/* ECN marked packet received=2E =
*/<br>+	CC_RTO =3D	0x0200,	/* RTO fired=2E */<br>+	CC_RTO_ERR =3D	0x0400,	/=
* RTO fired in error=2E */<br>+	CC_NDUPACK =3D	0x0800,	/* Threshold of dupa=
ck's reached=2E */<br>+	/*<br>+	 * The highest order 8 bits (0x01000000 - 0=
x80000000) are reserved<br>+	 * for CC algos to declare their own congestio=
n signal types=2E<br>+	 */<br>+	CC_SIGPRIVMASK =3D 0xFF000000	/* Mask to ch=
eck if sig is private=2E */<br>+} ccsignal_t;<br> #endif /* defined(_KERNEL=
) || defined(_WANT_TCPCB) */<br> <br>-/*<br>- * Congestion signal types pas=
sed to the cong_signal() hook=2E The highest order 8<br>- * bits (0x0100000=
0 - 0x80000000) are reserved for CC algos to declare their own<br>- * conge=
stion signal types=2E<br>- */<br>-#define	CC_ECN		0x00000001	/* ECN marked =
packet received=2E */<br>-#define	CC_RTO		0x00000002	/* RTO fired=2E */<br>=
-#define	CC_RTO_ERR	0x00000004	/* RTO fired in error=2E */<br>-#define	CC_N=
DUPACK	0x00000008	/* Threshold of dupack's reached=2E */<br>-<br>-#define	C=
C_SIGPRIVMASK	0xFF000000	/* Mask to check if sig is private=2E */<br>-<br> =
#ifdef _KERNEL<br> /*<br>  * Structure to hold data and function pointers t=
hat together represent a<br>@@ -175,10 +175,10 @@ struct cc_algo {<br> 	voi=
d	(*conn_init)(struct cc_var *ccv);<br> <br> 	/* Called on receipt of an ac=
k=2E */<br>-	void	(*ack_received)(struct cc_var *ccv, uint16_t type);<br>+	=
void	(*ack_received)(struct cc_var *ccv, ccsignal_t type);<br> <br> 	/* Cal=
led on detection of a congestion signal=2E */<br>-	void	(*cong_signal)(stru=
ct cc_var *ccv, uint32_t type);<br>+	void	(*cong_signal)(struct cc_var *ccv=
, ccsignal_t type);<br> <br> 	/* Called after exiting congestion recovery=
=2E */<br> 	void	(*post_recovery)(struct cc_var *ccv);<br>@@ -236,8 +236,8 =
@@ extern struct rwlock cc_list_lock;<br>  */<br> void newreno_cc_post_reco=
very(struct cc_var *);<br> void newreno_cc_after_idle(struct cc_var *);<br>=
-void newreno_cc_cong_signal(struct cc_var *, uint32_t );<br>-void newreno_=
cc_ack_received(struct cc_var *, uint16_t);<br>+void newreno_cc_cong_signal=
(struct cc_var *, ccsignal_t);<br>+void newreno_cc_ack_received(struct cc_v=
ar *, ccsignal_t);<br> <br> /* Called to temporarily keep an algo from goin=
g away during change */<br> void cc_refer(struct cc_algo *algo);<br>diff --=
git a/sys/netinet/cc/cc_cdg=2Ec b/sys/netinet/cc/cc_cdg=2Ec<br>index 3f23c4=
091170=2E=2E1e9236f878d4 100644<br>--- a/sys/netinet/cc/cc_cdg=2Ec<br>+++ b=
/sys/netinet/cc/cc_cdg=2Ec<br>@@ -221,8 +221,8 @@ static int cdg_mod_destro=
y(void);<br> static void cdg_conn_init(struct cc_var *ccv);<br> static int =
cdg_cb_init(struct cc_var *ccv, void *ptr);<br> static void cdg_cb_destroy(=
struct cc_var *ccv);<br>-static void cdg_cong_signal(struct cc_var *ccv, ui=
nt32_t signal_type);<br>-static void cdg_ack_received(struct cc_var *ccv, u=
int16_t ack_type);<br>+static void cdg_cong_signal(struct cc_var *ccv, ccsi=
gnal_t signal_type);<br>+static void cdg_ack_received(struct cc_var *ccv, c=
csignal_t ack_type);<br> static size_t cdg_data_sz(void);<br> <br> struct c=
c_algo cdg_cc_algo =3D {<br>@@ -450,11 +450,11 @@ cdg_window_increase(struc=
t cc_var *ccv, int new_measurement)<br> }<br> <br> static void<br>-cdg_cong=
_signal(struct cc_var *ccv, uint32_t signal_type)<br>+cdg_cong_signal(struc=
t cc_var *ccv, ccsignal_t signal_type)<br> {<br> 	struct cdg *cdg_data =3D =
ccv-&gt;cc_data;<br> <br>-	switch(signal_type) {<br>+	switch((int)signal_ty=
pe) {<br> 	case CC_CDG_DELAY:<br> 		CCV(ccv, snd_ssthresh) =3D cdg_window_d=
ecrease(ccv,<br> 		    CCV(ccv, snd_cwnd), V_cdg_beta_delay);<br>@@ -571,7 =
+571,7 @@ calc_moving_average(struct cdg *cdg_data, long qdiff_max, long qd=
iff_min)<br> }<br> <br> static void<br>-cdg_ack_received(struct cc_var *ccv=
, uint16_t ack_type)<br>+cdg_ack_received(struct cc_var *ccv, ccsignal_t ac=
k_type)<br> {<br> 	struct cdg *cdg_data;<br> 	struct ertt *e_t;<br>diff --g=
it a/sys/netinet/cc/cc_chd=2Ec b/sys/netinet/cc/cc_chd=2Ec<br>index c644d9b=
2cdb8=2E=2E52048a7c05ae 100644<br>--- a/sys/netinet/cc/cc_chd=2Ec<br>+++ b/=
sys/netinet/cc/cc_chd=2Ec<br>@@ -88,10 +88,10 @@<br> /* Largest possible nu=
mber returned by random()=2E */<br> #define	RANDOM_MAX	INT_MAX<br> <br>-sta=
tic void	chd_ack_received(struct cc_var *ccv, uint16_t ack_type);<br>+stati=
c void	chd_ack_received(struct cc_var *ccv, ccsignal_t ack_type);<br> stati=
c void	chd_cb_destroy(struct cc_var *ccv);<br> static int	chd_cb_init(struc=
t cc_var *ccv, void *ptr);<br>-static void	chd_cong_signal(struct cc_var *c=
cv, uint32_t signal_type);<br>+static void	chd_cong_signal(struct cc_var *c=
cv, ccsignal_t signal_type);<br> static void	chd_conn_init(struct cc_var *c=
cv);<br> static int	chd_mod_init(void);<br> static size_t	chd_data_sz(void)=
;<br>@@ -235,7 +235,7 @@ chd_window_increase(struct cc_var *ccv, int new_me=
asurement)<br>  * ack_type =3D=3D CC_ACK=2E<br>  */<br> static void<br>-chd=
_ack_received(struct cc_var *ccv, uint16_t ack_type)<br>+chd_ack_received(s=
truct cc_var *ccv, ccsignal_t ack_type)<br> {<br> 	struct chd *chd_data;<br=
> 	struct ertt *e_t;<br>@@ -336,7 +336,7 @@ chd_cb_init(struct cc_var *ccv,=
 void *ptr)<br> }<br> <br> static void<br>-chd_cong_signal(struct cc_var *c=
cv, uint32_t signal_type)<br>+chd_cong_signal(struct cc_var *ccv, ccsignal_=
t signal_type)<br> {<br> 	struct ertt *e_t;<br> 	struct chd *chd_data;<br>@=
@ -346,7 +346,7 @@ chd_cong_signal(struct cc_var *ccv, uint32_t signal_type=
)<br> 	chd_data =3D ccv-&gt;cc_data;<br> 	qdly =3D imax(e_t-&gt;rtt, chd_da=
ta-&gt;maxrtt_in_rtt) - e_t-&gt;minrtt;<br> <br>-	switch(signal_type) {<br>=
+	switch((int)signal_type) {<br> 	case CC_CHD_DELAY:<br> 		chd_window_decre=
ase(ccv); /* Set new ssthresh=2E */<br> 		CCV(ccv, snd_cwnd) =3D CCV(ccv, s=
nd_ssthresh);<br>@@ -387,6 +387,7 @@ chd_cong_signal(struct cc_var *ccv, ui=
nt32_t signal_type)<br> <br> 	default:<br> 		newreno_cc_cong_signal(ccv, si=
gnal_type);<br>+		break;<br> 	}<br> }<br> <br>diff --git a/sys/netinet/cc/c=
c_cubic=2Ec b/sys/netinet/cc/cc_cubic=2Ec<br>index eb1587d44427=2E=2Ea9c759=
2b80ca 100644<br>--- a/sys/netinet/cc/cc_cubic=2Ec<br>+++ b/sys/netinet/cc/=
cc_cubic=2Ec<br>@@ -73,10 +73,10 @@<br> #include &lt;netinet/cc/cc_cubic=2E=
h&gt;<br> #include &lt;netinet/cc/cc_module=2Eh&gt;<br> <br>-static void	cu=
bic_ack_received(struct cc_var *ccv, uint16_t type);<br>+static void	cubic_=
ack_received(struct cc_var *ccv, ccsignal_t type);<br> static void	cubic_cb=
_destroy(struct cc_var *ccv);<br> static int	cubic_cb_init(struct cc_var *c=
cv, void *ptr);<br>-static void	cubic_cong_signal(struct cc_var *ccv, uint3=
2_t type);<br>+static void	cubic_cong_signal(struct cc_var *ccv, ccsignal_t=
 type);<br> static void	cubic_conn_init(struct cc_var *ccv);<br> static int=
	cubic_mod_init(void);<br> static void	cubic_post_recovery(struct cc_var *c=
cv);<br>@@ -233,7 +233,7 @@ cubic_does_slow_start(struct cc_var *ccv, struc=
t cubic *cubicd)<br> }<br> <br> static void<br>-cubic_ack_received(struct c=
c_var *ccv, uint16_t type)<br>+cubic_ack_received(struct cc_var *ccv, ccsig=
nal_t type)<br> {<br> 	struct cubic *cubic_data;<br> 	unsigned long W_est, =
W_cubic;<br>@@ -417,7 +417,7 @@ cubic_cb_init(struct cc_var *ccv, void *ptr=
)<br>  * Perform any necessary tasks before we enter congestion recovery=2E=
<br>  */<br> static void<br>-cubic_cong_signal(struct cc_var *ccv, uint32_t=
 type)<br>+cubic_cong_signal(struct cc_var *ccv, ccsignal_t type)<br> {<br>=
 	struct cubic *cubic_data;<br> 	uint32_t mss, pipe;<br>@@ -503,6 +503,8 @@=
 cubic_cong_signal(struct cc_var *ccv, uint32_t type)<br> 		cubic_data-&gt;=
cwnd_epoch =3D cubic_data-&gt;undo_cwnd_epoch;<br> 		cubic_data-&gt;t_epoch=
 =3D cubic_data-&gt;undo_t_epoch;<br> 		break;<br>+	default:<br>+		break;<b=
r> 	}<br> }<br> <br>diff --git a/sys/netinet/cc/cc_dctcp=2Ec b/sys/netinet/=
cc/cc_dctcp=2Ec<br>index ae0a56839449=2E=2E374db98c5e60 100644<br>--- a/sys=
/netinet/cc/cc_dctcp=2Ec<br>+++ b/sys/netinet/cc/cc_dctcp=2Ec<br>@@ -79,11 =
+79,11 @@ struct dctcp {<br> 	uint32_t num_cong_events; /* # of congestion =
events */<br> };<br> <br>-static void	dctcp_ack_received(struct cc_var *ccv=
, uint16_t type);<br>+static void	dctcp_ack_received(struct cc_var *ccv, cc=
signal_t type);<br> static void	dctcp_after_idle(struct cc_var *ccv);<br> s=
tatic void	dctcp_cb_destroy(struct cc_var *ccv);<br> static int	dctcp_cb_in=
it(struct cc_var *ccv, void *ptr);<br>-static void	dctcp_cong_signal(struct=
 cc_var *ccv, uint32_t type);<br>+static void	dctcp_cong_signal(struct cc_v=
ar *ccv, ccsignal_t type);<br> static void	dctcp_conn_init(struct cc_var *c=
cv);<br> static void	dctcp_post_recovery(struct cc_var *ccv);<br> static vo=
id	dctcp_ecnpkt_handler(struct cc_var *ccv);<br>@@ -104,7 +104,7 @@ struct =
cc_algo dctcp_cc_algo =3D {<br> };<br> <br> static void<br>-dctcp_ack_recei=
ved(struct cc_var *ccv, uint16_t type)<br>+dctcp_ack_received(struct cc_var=
 *ccv, ccsignal_t type)<br> {<br> 	struct dctcp *dctcp_data;<br> 	int bytes=
_acked =3D 0;<br>@@ -237,7 +237,7 @@ dctcp_cb_init(struct cc_var *ccv, void=
 *ptr)<br>  * Perform any necessary tasks before we enter congestion recove=
ry=2E<br>  */<br> static void<br>-dctcp_cong_signal(struct cc_var *ccv, uin=
t32_t type)<br>+dctcp_cong_signal(struct cc_var *ccv, ccsignal_t type)<br> =
{<br> 	struct dctcp *dctcp_data;<br> 	uint32_t cwin, mss, pipe;<br>@@ -308,=
6 +308,8 @@ dctcp_cong_signal(struct cc_var *ccv, uint32_t type)<br> 			dct=
cp_data-&gt;save_sndnxt +=3D CCV(ccv, t_maxseg);<br> 			dctcp_data-&gt;num_=
cong_events++;<br> 			break;<br>+		default:<br>+			break;<br> 		}<br> 	} el=
se<br> 		newreno_cc_cong_signal(ccv, type);<br>diff --git a/sys/netinet/cc/=
cc_hd=2Ec b/sys/netinet/cc/cc_hd=2Ec<br>index 1a8b62ccf426=2E=2E82486563f97=
e 100644<br>--- a/sys/netinet/cc/cc_hd=2Ec<br>+++ b/sys/netinet/cc/cc_hd=2E=
c<br>@@ -80,7 +80,7 @@<br> /* Largest possible number returned by random()=
=2E */<br> #define	RANDOM_MAX	INT_MAX<br> <br>-static void	hd_ack_received(=
struct cc_var *ccv, uint16_t ack_type);<br>+static void	hd_ack_received(str=
uct cc_var *ccv, ccsignal_t ack_type);<br> static int	hd_mod_init(void);<br=
> static size_t	hd_data_sz(void);<br> <br>@@ -138,7 +138,7 @@ should_backof=
f(int qdly, int maxqdly)<br>  * as NewReno in all other circumstances=2E<br=
>  */<br> static void<br>-hd_ack_received(struct cc_var *ccv, uint16_t ack_=
type)<br>+hd_ack_received(struct cc_var *ccv, ccsignal_t ack_type)<br> {<br=
> 	struct ertt *e_t;<br> 	int qdly;<br>diff --git a/sys/netinet/cc/cc_htcp=
=2Ec b/sys/netinet/cc/cc_htcp=2Ec<br>index 43224446fd84=2E=2E41c552a3bfa0 1=
00644<br>--- a/sys/netinet/cc/cc_htcp=2Ec<br>+++ b/sys/netinet/cc/cc_htcp=
=2Ec<br>@@ -136,10 +136,10 @@<br> 	(((diff) / hz) * (((diff) &lt;&lt; HTCP_=
ALPHA_INC_SHIFT) / (4 * hz))) \<br> ) &gt;&gt; HTCP_ALPHA_INC_SHIFT)<br> <b=
r>-static void	htcp_ack_received(struct cc_var *ccv, uint16_t type);<br>+st=
atic void	htcp_ack_received(struct cc_var *ccv, ccsignal_t type);<br> stati=
c void	htcp_cb_destroy(struct cc_var *ccv);<br> static int	htcp_cb_init(str=
uct cc_var *ccv, void *ptr);<br>-static void	htcp_cong_signal(struct cc_var=
 *ccv, uint32_t type);<br>+static void	htcp_cong_signal(struct cc_var *ccv,=
 ccsignal_t type);<br> static int	htcp_mod_init(void);<br> static void	htcp=
_post_recovery(struct cc_var *ccv);<br> static void	htcp_recalc_alpha(struc=
t cc_var *ccv);<br>@@ -190,7 +190,7 @@ struct cc_algo htcp_cc_algo =3D {<br=
> };<br> <br> static void<br>-htcp_ack_received(struct cc_var *ccv, uint16_=
t type)<br>+htcp_ack_received(struct cc_var *ccv, ccsignal_t type)<br> {<br=
> 	struct htcp *htcp_data;<br> <br>@@ -278,7 +278,7 @@ htcp_cb_init(struct =
cc_var *ccv, void *ptr)<br>  * Perform any necessary tasks before we enter =
congestion recovery=2E<br>  */<br> static void<br>-htcp_cong_signal(struct =
cc_var *ccv, uint32_t type)<br>+htcp_cong_signal(struct cc_var *ccv, ccsign=
al_t type)<br> {<br> 	struct htcp *htcp_data;<br> 	uint32_t mss, pipe;<br>@=
@ -345,6 +345,8 @@ htcp_cong_signal(struct cc_var *ccv, uint32_t type)<br> =
		if (CCV(ccv, t_rxtshift) &gt;=3D 2)<br> 			htcp_data-&gt;t_last_cong =3D =
ticks;<br> 		break;<br>+	default:<br>+		break;<br> 	}<br> }<br> <br>diff --=
git a/sys/netinet/cc/cc_newreno=2Ec b/sys/netinet/cc/cc_newreno=2Ec<br>inde=
x 71f2764ef4bc=2E=2Eaa20e2c64f7d 100644<br>--- a/sys/netinet/cc/cc_newreno=
=2Ec<br>+++ b/sys/netinet/cc/cc_newreno=2Ec<br>@@ -84,9 +84,9 @@<br> #inclu=
de &lt;netinet/cc/cc_newreno=2Eh&gt;<br> <br> static void	newreno_cb_destro=
y(struct cc_var *ccv);<br>-static void	newreno_ack_received(struct cc_var *=
ccv, uint16_t type);<br>+static void	newreno_ack_received(struct cc_var *cc=
v, ccsignal_t type);<br> static void	newreno_after_idle(struct cc_var *ccv)=
;<br>-static void	newreno_cong_signal(struct cc_var *ccv, uint32_t type);<b=
r>+static void	newreno_cong_signal(struct cc_var *ccv, ccsignal_t type);<br=
> static int newreno_ctl_output(struct cc_var *ccv, struct sockopt *sopt, v=
oid *buf);<br> static void	newreno_newround(struct cc_var *ccv, uint32_t ro=
und_cnt);<br> static void	newreno_rttsample(struct cc_var *ccv, uint32_t us=
ec_rtt, uint32_t rxtcnt, uint32_t fas);<br>@@ -212,7 +212,7 @@ newreno_cb_d=
estroy(struct cc_var *ccv)<br> }<br> <br> static void<br>-newreno_ack_recei=
ved(struct cc_var *ccv, uint16_t type)<br>+newreno_ack_received(struct cc_v=
ar *ccv, ccsignal_t type)<br> {<br> 	struct newreno *nreno;<br> <br>@@ -363=
,7 +363,7 @@ newreno_after_idle(struct cc_var *ccv)<br>  * Perform any nece=
ssary tasks before we enter congestion recovery=2E<br>  */<br> static void<=
br>-newreno_cong_signal(struct cc_var *ccv, uint32_t type)<br>+newreno_cong=
_signal(struct cc_var *ccv, ccsignal_t type)<br> {<br> 	struct newreno *nre=
no;<br> 	uint32_t beta, beta_ecn, cwin, factor, mss, pipe;<br>@@ -442,6 +44=
2,8 @@ newreno_cong_signal(struct cc_var *ccv, uint32_t type)<br> 		}<br> 	=
	CCV(ccv, snd_cwnd) =3D mss;<br> 		break;<br>+	default:<br>+		break;<br> 	}=
<br> }<br> <br>diff --git a/sys/netinet/cc/cc_vegas=2Ec b/sys/netinet/cc/cc=
_vegas=2Ec<br>index aac9c9ce77ff=2E=2Eecd42c1a0f53 100644<br>--- a/sys/neti=
net/cc/cc_vegas=2Ec<br>+++ b/sys/netinet/cc/cc_vegas=2Ec<br>@@ -84,12 +84,1=
2 @@<br>  * Private signal type for rate based congestion signal=2E<br>  * =
See &lt;netinet/cc=2Eh&gt; for appropriate bit-range to use for private sig=
nals=2E<br>  */<br>-#define	CC_VEGAS_RATE	0x01000000<br>+#define	CC_VEGAS_R=
ATE	0x04000000<br> <br>-static void	vegas_ack_received(struct cc_var *ccv, =
uint16_t ack_type);<br>+static void	vegas_ack_received(struct cc_var *ccv, =
ccsignal_t ack_type);<br> static void	vegas_cb_destroy(struct cc_var *ccv);=
<br> static int	vegas_cb_init(struct cc_var *ccv, void *ptr);<br>-static vo=
id	vegas_cong_signal(struct cc_var *ccv, uint32_t signal_type);<br>+static =
void	vegas_cong_signal(struct cc_var *ccv, ccsignal_t signal_type);<br> sta=
tic void	vegas_conn_init(struct cc_var *ccv);<br> static int	vegas_mod_init=
(void);<br> static size_t	vegas_data_sz(void);<br>@@ -124,7 +124,7 @@ struc=
t cc_algo vegas_cc_algo =3D {<br>  * has been used=2E<br>  */<br> static vo=
id<br>-vegas_ack_received(struct cc_var *ccv, uint16_t ack_type)<br>+vegas_=
ack_received(struct cc_var *ccv, ccsignal_t ack_type)<br> {<br> 	struct ert=
t *e_t;<br> 	struct vegas *vegas_data;<br>@@ -203,7 +203,7 @@ vegas_cb_init=
(struct cc_var *ccv, void *ptr)<br>  * handled here, otherwise it falls bac=
k to newreno's congestion handling=2E<br>  */<br> static void<br>-vegas_con=
g_signal(struct cc_var *ccv, uint32_t signal_type)<br>+vegas_cong_signal(st=
ruct cc_var *ccv, ccsignal_t signal_type)<br> {<br> 	struct vegas *vegas_da=
ta;<br> 	int presignalrecov;<br>@@ -215,7 +215,7 @@ vegas_cong_signal(struc=
t cc_var *ccv, uint32_t signal_type)<br> 	else<br> 		presignalrecov =3D 0;<=
br> <br>-	switch(signal_type) {<br>+	switch((int)signal_type) {<br> 	case C=
C_VEGAS_RATE:<br> 		if (!IN_RECOVERY(CCV(ccv, t_flags))) {<br> 			CCV(ccv, =
snd_cwnd) =3D max(2 * CCV(ccv, t_maxseg),<br>@@ -228,6 +228,7 @@ vegas_cong=
_signal(struct cc_var *ccv, uint32_t signal_type)<br> <br> 	default:<br> 		=
newreno_cc_cong_signal(ccv, signal_type);<br>+		break;<br> 	}<br> <br> 	if =
(IN_RECOVERY(CCV(ccv, t_flags)) &amp;&amp; !presignalrecov)<br></div></pre>=
</blockquote></div><br clear=3D"all"><div dir=3D"auto">Buildworld is now br=
oken for all arches (at least incremental build)<br><br>Among the errors<br=
><br>/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'<br><br></=
div></body></html>
------T877TB56UDSFUDD4AKM6Z78MQX4HAZ--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?A1F250AD-27F6-459F-A8FA-29EF8CF8EE44>