Date: Sat, 24 Feb 2024 20:30:43 +0000 From: "Scheffenegger, Richard" <Richard.Scheffenegger@netapp.com> To: Baptiste Daroussin <bapt@FreeBSD.org>, Richard Scheffenegger <rscheff@FreeBSD.org>, "src-committers@FreeBSD.org" <src-committers@FreeBSD.org>, "dev-commits-src-all@FreeBSD.org" <dev-commits-src-all@FreeBSD.org>, "dev-commits-src-main@FreeBSD.org" <dev-commits-src-main@FreeBSD.org> Subject: RE: git: f74352fbcf15 - main - tcp: use enum for all congestion control signals Message-ID: <PH0PR06MB7639163516643B8783C1DB5186542@PH0PR06MB7639.namprd06.prod.outlook.com> In-Reply-To: <A1F250AD-27F6-459F-A8FA-29EF8CF8EE44@FreeBSD.org> References: <202402241615.41OGFcg7091756@gitrepo.freebsd.org> <A1F250AD-27F6-459F-A8FA-29EF8CF8EE44@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] Thanks for the heads-up. Is fixed with 5e248c23d995a059d24f4784d5a256cddd42e557 Richard From: Baptiste Daroussin <bapt@FreeBSD.org> Sent: Samstag, 24. Februar 2024 19:24 To: Richard Scheffenegger <rscheff@FreeBSD.org>; src-committers@FreeBSD.org; dev-commits-src-all@FreeBSD.org; dev-commits-src-main@FreeBSD.org Subject: Re: git: f74352fbcf15 - main - tcp: use enum for all congestion control signals EXTERNAL EMAIL - USE CAUTION when clicking links or attachments Le 24 février 2024 17:15:38 GMT+01:00, Richard Scheffenegger <rscheff@FreeBSD.org<mailto:rscheff@FreeBSD.org>> a écrit : The branch main has been updated by rscheff: URL: https://cgit.FreeBSD.org/src/commit/?id=f74352fbcf15341accaf5a92240871f98323215d<https://cgit.freebsd.org/src/commit/?id=f74352fbcf15341accaf5a92240871f98323215d> commit f74352fbcf15341accaf5a92240871f98323215d Author: Richard Scheffenegger <rscheff@FreeBSD.org<mailto:rscheff@FreeBSD.org>> AuthorDate: 2024-02-24 15:41:31 +0000 Commit: Richard Scheffenegger <rscheff@FreeBSD.org<mailto:rscheff@FreeBSD.org>> CommitDate: 2024-02-24 15:41:48 +0000 tcp: use enum for all congestion control signals Facilitate easier troubleshooting by enumerating all congestion control signals. Typecast the enum to int, when a congestion control module uses private signals. No external change. Reviewed By: glebius, tuexen, #transport Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D43838 ________________________________ sys/netinet/cc/cc.c | 2 +- sys/netinet/cc/cc.h | 42 +++++++++++++++++++++--------------------- sys/netinet/cc/cc_cdg.c | 10 +++++----- sys/netinet/cc/cc_chd.c | 11 ++++++----- sys/netinet/cc/cc_cubic.c | 10 ++++++---- sys/netinet/cc/cc_dctcp.c | 10 ++++++---- sys/netinet/cc/cc_hd.c | 4 ++-- sys/netinet/cc/cc_htcp.c | 10 ++++++---- sys/netinet/cc/cc_newreno.c | 10 ++++++---- sys/netinet/cc/cc_vegas.c | 13 +++++++------ 10 files changed, 66 insertions(+), 56 deletions(-) diff --git a/sys/netinet/cc/cc.c b/sys/netinet/cc/cc.c index c2965b1e6a48..9308b5f8d764 100644 --- a/sys/netinet/cc/cc.c +++ b/sys/netinet/cc/cc.c @@ -505,7 +505,7 @@ newreno_cc_cong_signal(struct cc_var *ccv, uint32_t type) } 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 == CC_ACK && !IN_RECOVERY(CCV(ccv, t_flags)) && (ccv->flags & CCF_CWND_LIMITED)) { diff --git a/sys/netinet/cc/cc.h b/sys/netinet/cc/cc.h index 9571da50b2c7..5b2cb58a24a0 100644 --- a/sys/netinet/cc/cc.h +++ b/sys/netinet/cc/cc.h @@ -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 conservative ssthresh */ -/* ACK types passed to the ack_received() hook. */ -#define CC_ACK 0x0001 /* Regular in sequence ACK. */ -#define CC_DUPACK 0x0002 /* Duplicate ACK. */ -#define CC_PARTIALACK 0x0004 /* Not yet. */ -#define CC_SACK 0x0008 /* Not yet. */ +typedef enum { + /* ACK types passed to the ack_received() hook. */ + CC_ACK = 0x0001, /* Regular in sequence ACK. */ + CC_DUPACK = 0x0002, /* Duplicate ACK. */ + CC_PARTIALACK = 0x0004, /* Not yet. */ + CC_SACK = 0x0008, /* Not yet. */ + /* Congestion signal types passed to the cong_signal() hook. */ + CC_ECN = 0x0100, /* ECN marked packet received. */ + CC_RTO = 0x0200, /* RTO fired. */ + CC_RTO_ERR = 0x0400, /* RTO fired in error. */ + CC_NDUPACK = 0x0800, /* Threshold of dupack's reached. */ + /* + * The highest order 8 bits (0x01000000 - 0x80000000) are reserved + * for CC algos to declare their own congestion signal types. + */ + CC_SIGPRIVMASK = 0xFF000000 /* Mask to check if sig is private. */ +} ccsignal_t; #endif /* defined(_KERNEL) || defined(_WANT_TCPCB) */ -/* - * Congestion signal types passed to the cong_signal() hook. The highest order 8 - * bits (0x01000000 - 0x80000000) are reserved for CC algos to declare their own - * congestion signal types. - */ -#define CC_ECN 0x00000001 /* ECN marked packet received. */ -#define CC_RTO 0x00000002 /* RTO fired. */ -#define CC_RTO_ERR 0x00000004 /* RTO fired in error. */ -#define CC_NDUPACK 0x00000008 /* Threshold of dupack's reached. */ - -#define CC_SIGPRIVMASK 0xFF000000 /* Mask to check if sig is private. */ - #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); /* Called on receipt of an ack. */ - void (*ack_received)(struct cc_var *ccv, uint16_t type); + void (*ack_received)(struct cc_var *ccv, ccsignal_t type); /* Called on detection of a congestion signal. */ - void (*cong_signal)(struct cc_var *ccv, uint32_t type); + void (*cong_signal)(struct cc_var *ccv, ccsignal_t type); /* Called after exiting congestion recovery. */ 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); /* 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.c b/sys/netinet/cc/cc_cdg.c index 3f23c4091170..1e9236f878d4 100644 --- a/sys/netinet/cc/cc_cdg.c +++ b/sys/netinet/cc/cc_cdg.c @@ -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); struct cc_algo cdg_cc_algo = { @@ -450,11 +450,11 @@ cdg_window_increase(struct cc_var *ccv, int new_measurement) } 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 = ccv->cc_data; - switch(signal_type) { + switch((int)signal_type) { case CC_CDG_DELAY: CCV(ccv, snd_ssthresh) = 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) } 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.c b/sys/netinet/cc/cc_chd.c index c644d9b2cdb8..52048a7c05ae 100644 --- a/sys/netinet/cc/cc_chd.c +++ b/sys/netinet/cc/cc_chd.c @@ -88,10 +88,10 @@ /* Largest possible number returned by random(). */ #define RANDOM_MAX INT_MAX -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_measurement) * ack_type == CC_ACK. */ 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) } 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_type) chd_data = ccv->cc_data; qdly = imax(e_t->rtt, chd_data->maxrtt_in_rtt) - e_t->minrtt; - switch(signal_type) { + switch((int)signal_type) { case CC_CHD_DELAY: chd_window_decrease(ccv); /* Set new ssthresh. */ CCV(ccv, snd_cwnd) = CCV(ccv, snd_ssthresh); @@ -387,6 +387,7 @@ chd_cong_signal(struct cc_var *ccv, uint32_t signal_type) default: newreno_cc_cong_signal(ccv, signal_type); + break; } } diff --git a/sys/netinet/cc/cc_cubic.c b/sys/netinet/cc/cc_cubic.c index eb1587d44427..a9c7592b80ca 100644 --- a/sys/netinet/cc/cc_cubic.c +++ b/sys/netinet/cc/cc_cubic.c @@ -73,10 +73,10 @@ #include <netinet/cc/cc_cubic.h> #include <netinet/cc/cc_module.h> -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 cubic *cubicd) } 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. */ 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 = cubic_data->undo_cwnd_epoch; cubic_data->t_epoch = cubic_data->undo_t_epoch; break; + default: + break; } } diff --git a/sys/netinet/cc/cc_dctcp.c b/sys/netinet/cc/cc_dctcp.c index ae0a56839449..374db98c5e60 100644 --- a/sys/netinet/cc/cc_dctcp.c +++ b/sys/netinet/cc/cc_dctcp.c @@ -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, 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 = { }; 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 = 0; @@ -237,7 +237,7 @@ dctcp_cb_init(struct cc_var *ccv, void *ptr) * Perform any necessary tasks before we enter congestion recovery. */ 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 += 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.c b/sys/netinet/cc/cc_hd.c index 1a8b62ccf426..82486563f97e 100644 --- a/sys/netinet/cc/cc_hd.c +++ b/sys/netinet/cc/cc_hd.c @@ -80,7 +80,7 @@ /* Largest possible number returned by random(). */ #define RANDOM_MAX INT_MAX -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); @@ -138,7 +138,7 @@ should_backoff(int qdly, int maxqdly) * as NewReno in all other circumstances. */ 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.c b/sys/netinet/cc/cc_htcp.c index 43224446fd84..41c552a3bfa0 100644 --- a/sys/netinet/cc/cc_htcp.c +++ b/sys/netinet/cc/cc_htcp.c @@ -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); +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 = { }; 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. */ 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) >= 2) htcp_data->t_last_cong = ticks; break; + default: + break; } } diff --git a/sys/netinet/cc/cc_newreno.c b/sys/netinet/cc/cc_newreno.c index 71f2764ef4bc..aa20e2c64f7d 100644 --- a/sys/netinet/cc/cc_newreno.c +++ b/sys/netinet/cc/cc_newreno.c @@ -84,9 +84,9 @@ #include <netinet/cc/cc_newreno.h> 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, uint32_t rxtcnt, uint32_t fas); @@ -212,7 +212,7 @@ newreno_cb_destroy(struct cc_var *ccv) } 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; @@ -363,7 +363,7 @@ newreno_after_idle(struct cc_var *ccv) * Perform any necessary tasks before we enter congestion recovery. */ 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) = mss; break; + default: + break; } } diff --git a/sys/netinet/cc/cc_vegas.c b/sys/netinet/cc/cc_vegas.c index aac9c9ce77ff..ecd42c1a0f53 100644 --- a/sys/netinet/cc/cc_vegas.c +++ b/sys/netinet/cc/cc_vegas.c @@ -84,12 +84,12 @@ * Private signal type for rate based congestion signal. * See <netinet/cc.h> for appropriate bit-range to use for private signals. */ -#define CC_VEGAS_RATE 0x01000000 +#define CC_VEGAS_RATE 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 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 = { * has been used. */ 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 handling. */ 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 = 0; - switch(signal_type) { + switch((int)signal_type) { case CC_VEGAS_RATE: if (!IN_RECOVERY(CCV(ccv, t_flags))) { CCV(ccv, snd_cwnd) = 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 broken for all arches (at least incremental build) Among the errors /home/bapt/worktrees/main/lib/libstats/../../sys/netinet/tcp_stats.c:138:32: error: use of undeclared identifier 'CC_NDUPACK' [-- Attachment #2 --] <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="Generator" content="Microsoft Word 15 (filtered medium)"> <!--[if !mso]><style>v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style><![endif]--><style><!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4;} @font-face {font-family:Consolas; panose-1:2 11 6 9 2 2 4 3 2 4;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm; font-size:11.0pt; font-family:"Calibri",sans-serif;} a:link, span.MsoHyperlink {mso-style-priority:99; color:blue; text-decoration:underline;} pre {mso-style-priority:99; mso-style-link:"HTML Preformatted Char"; margin:0cm; margin-bottom:.0001pt; font-size:10.0pt; font-family:"Courier New";} span.HTMLPreformattedChar {mso-style-name:"HTML Preformatted Char"; mso-style-priority:99; mso-style-link:"HTML Preformatted"; font-family:"Consolas",serif;} .MsoChpDefault {mso-style-type:export-only; font-size:10.0pt; mso-ligatures:none;} @page WordSection1 {size:612.0pt 792.0pt; margin:72.0pt 72.0pt 72.0pt 72.0pt;} div.WordSection1 {page:WordSection1;} --></style><!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="1026" /> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1" /> </o:shapelayout></xml><![endif]--> </head> <body lang="en-AT" link="blue" vlink="purple" style="word-wrap:break-word"> <div class="WordSection1"> <p class="MsoNormal"><span lang="EN-US" style="mso-fareast-language:EN-US">Thanks for the heads-up. Is fixed with 5e248c23d995a059d24f4784d5a256cddd42e557<o:p></o:p></span></p> <p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p> <div> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><b><span lang="EN-US" style="font-size:9.0pt;font-family:"Arial",sans-serif;color:black">Richard </span></b><span lang="EN-US" style="font-size:8.0pt;font-family:"Arial",sans-serif"><o:p></o:p></span></p> </div> <p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p> <div> <div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm"> <p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> Baptiste Daroussin <bapt@FreeBSD.org> <br> <b>Sent:</b> Samstag, 24. Februar 2024 19:24<br> <b>To:</b> Richard Scheffenegger <rscheff@FreeBSD.org>; src-committers@FreeBSD.org; dev-commits-src-all@FreeBSD.org; dev-commits-src-main@FreeBSD.org<br> <b>Subject:</b> Re: git: f74352fbcf15 - main - tcp: use enum for all congestion control signals<o:p></o:p></span></p> </div> </div> <p class="MsoNormal"><o:p> </o:p></p> <table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" align="left" style="background:#F36D6D"> <tbody> <tr> <td style="padding:6.0pt 6.0pt 6.0pt 6.0pt"> <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly"> <b><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">EXTERNAL EMAIL - USE CAUTION when clicking links or attachments </span></b><o:p></o:p></p> </td> </tr> </tbody> </table> <p class="MsoNormal" style="margin-bottom:12.0pt"><br> <br> <o:p></o:p></p> <div> <div> <div> <p class="MsoNormal">Le 24 février 2024 17:15:38 GMT+01:00, Richard Scheffenegger <<a href="mailto:rscheff@FreeBSD.org">rscheff@FreeBSD.org</a>> a écrit :<o:p></o:p></p> </div> <blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"> <div> <pre>The branch main has been updated by rscheff:<br><br>URL: <a href="https://cgit.freebsd.org/src/commit/?id=f74352fbcf15341accaf5a92240871f98323215d">https://cgit.FreeBSD.org/src/commit/?id=f74352fbcf15341accaf5a92240871f98323215d</a><br><br>commit f74352fbcf15341accaf5a92240871f98323215d<br>Author: Richard Scheffenegger <<a href="mailto:rscheff@FreeBSD.org">rscheff@FreeBSD.org</a>><br>AuthorDate: 2024-02-24 15:41:31 +0000<br>Commit: Richard Scheffenegger <<a href="mailto:rscheff@FreeBSD.org">rscheff@FreeBSD.org</a>><br>CommitDate: 2024-02-24 15:41:48 +0000<br><br> tcp: use enum for all congestion control signals<br> <br> Facilitate easier troubleshooting by enumerating<br> all congestion control signals. Typecast the<br> enum to int, when a congestion control module uses<br> private signals.<br> <br> No external change.<br> <br> Reviewed By: glebius, tuexen, #transport<br> Sponsored by: NetApp, Inc.<br> Differential Revision: <a href="https://reviews.freebsd.org/D43838">https://reviews.freebsd.org/D43838</a><o:p></o:p></pre> <pre style="text-align:center"><hr size="2" width="100%" align="center"></pre> <pre> sys/netinet/cc/cc.c | 2 +-<br> sys/netinet/cc/cc.h | 42 +++++++++++++++++++++---------------------<br> sys/netinet/cc/cc_cdg.c | 10 +++++-----<br> sys/netinet/cc/cc_chd.c | 11 ++++++-----<br> sys/netinet/cc/cc_cubic.c | 10 ++++++----<br> sys/netinet/cc/cc_dctcp.c | 10 ++++++----<br> sys/netinet/cc/cc_hd.c | 4 ++--<br> sys/netinet/cc/cc_htcp.c | 10 ++++++----<br> sys/netinet/cc/cc_newreno.c | 10 ++++++----<br> sys/netinet/cc/cc_vegas.c | 13 +++++++------<br> 10 files changed, 66 insertions(+), 56 deletions(-)<br><br>diff --git a/sys/netinet/cc/cc.c b/sys/netinet/cc/cc.c<br>index c2965b1e6a48..9308b5f8d764 100644<br>--- a/sys/netinet/cc/cc.c<br>+++ b/sys/netinet/cc/cc.c<br>@@ -505,7 +505,7 @@ newreno_cc_cong_signal(struct cc_var *ccv, uint32_t type)<br> }<br> <br> void<br>-newreno_cc_ack_received(struct cc_var *ccv, uint16_t type)<br>+newreno_cc_ack_received(struct cc_var *ccv, ccsignal_t type)<br> {<br> if (type == CC_ACK && !IN_RECOVERY(CCV(ccv, t_flags)) &&<br> (ccv->flags & CCF_CWND_LIMITED)) {<br>diff --git a/sys/netinet/cc/cc.h b/sys/netinet/cc/cc.h<br>index 9571da50b2c7..5b2cb58a24a0 100644<br>--- a/sys/netinet/cc/cc.h<br>+++ b/sys/netinet/cc/cc.h<br>@@ -121,25 +121,25 @@ struct cc_var {<br> #define CCF_HYSTART_CAN_SH_CWND 0x0800 /* Can hystart when going CSS -> CA slam the cwnd */<br> #define CCF_HYSTART_CONS_SSTH 0x1000 /* Should hystart use the more conservative ssthresh */<br> <br>-/* ACK types passed to the ack_received() hook. */<br>-#define CC_ACK 0x0001 /* Regular in sequence ACK. */<br>-#define CC_DUPACK 0x0002 /* Duplicate ACK. */<br>-#define CC_PARTIALACK 0x0004 /* Not yet. */<br>-#define CC_SACK 0x0008 /* Not yet. */<br>+typedef enum {<br>+ /* ACK types passed to the ack_received() hook. */<br>+ CC_ACK = 0x0001, /* Regular in sequence ACK. */<br>+ CC_DUPACK = 0x0002, /* Duplicate ACK. */<br>+ CC_PARTIALACK = 0x0004, /* Not yet. */<br>+ CC_SACK = 0x0008, /* Not yet. */<br>+ /* Congestion signal types passed to the cong_signal() hook. */<br>+ CC_ECN = 0x0100, /* ECN marked packet received. */<br>+ CC_RTO = 0x0200, /* RTO fired. */<br>+ CC_RTO_ERR = 0x0400, /* RTO fired in error. */<br>+ CC_NDUPACK = 0x0800, /* Threshold of dupack's reached. */<br>+ /*<br>+ * The highest order 8 bits (0x01000000 - 0x80000000) are reserved<br>+ * for CC algos to declare their own congestion signal types.<br>+ */<br>+ CC_SIGPRIVMASK = 0xFF000000 /* Mask to check if sig is private. */<br>+} ccsignal_t;<br> #endif /* defined(_KERNEL) || defined(_WANT_TCPCB) */<br> <br>-/*<br>- * Congestion signal types passed to the cong_signal() hook. The highest order 8<br>- * bits (0x01000000 - 0x80000000) are reserved for CC algos to declare their own<br>- * congestion signal types.<br>- */<br>-#define CC_ECN 0x00000001 /* ECN marked packet received. */<br>-#define CC_RTO 0x00000002 /* RTO fired. */<br>-#define CC_RTO_ERR 0x00000004 /* RTO fired in error. */<br>-#define CC_NDUPACK 0x00000008 /* Threshold of dupack's reached. */<br>-<br>-#define CC_SIGPRIVMASK 0xFF000000 /* Mask to check if sig is private. */<br>-<br> #ifdef _KERNEL<br> /*<br> * Structure to hold data and function pointers that together represent a<br>@@ -175,10 +175,10 @@ struct cc_algo {<br> void (*conn_init)(struct cc_var *ccv);<br> <br> /* Called on receipt of an ack. */<br>- void (*ack_received)(struct cc_var *ccv, uint16_t type);<br>+ void (*ack_received)(struct cc_var *ccv, ccsignal_t type);<br> <br> /* Called on detection of a congestion signal. */<br>- void (*cong_signal)(struct cc_var *ccv, uint32_t type);<br>+ void (*cong_signal)(struct cc_var *ccv, ccsignal_t type);<br> <br> /* Called after exiting congestion recovery. */<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_recovery(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_var *, ccsignal_t);<br> <br> /* Called to temporarily keep an algo from going away during change */<br> void cc_refer(struct cc_algo *algo);<br>diff --git a/sys/netinet/cc/cc_cdg.c b/sys/netinet/cc/cc_cdg.c<br>index 3f23c4091170..1e9236f878d4 100644<br>--- a/sys/netinet/cc/cc_cdg.c<br>+++ b/sys/netinet/cc/cc_cdg.c<br>@@ -221,8 +221,8 @@ static int cdg_mod_destroy(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, uint32_t signal_type);<br>-static void cdg_ack_received(struct cc_var *ccv, uint16_t ack_type);<br>+static void cdg_cong_signal(struct cc_var *ccv, ccsignal_t signal_type);<br>+static void cdg_ack_received(struct cc_var *ccv, ccsignal_t ack_type);<br> static size_t cdg_data_sz(void);<br> <br> struct cc_algo cdg_cc_algo = {<br>@@ -450,11 +450,11 @@ cdg_window_increase(struct 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(struct cc_var *ccv, ccsignal_t signal_type)<br> {<br> struct cdg *cdg_data = ccv->cc_data;<br> <br>- switch(signal_type) {<br>+ switch((int)signal_type) {<br> case CC_CDG_DELAY:<br> CCV(ccv, snd_ssthresh) = cdg_window_decrease(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 qdiff_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 ack_type)<br> {<br> struct cdg *cdg_data;<br> struct ertt *e_t;<br>diff --git a/sys/netinet/cc/cc_chd.c b/sys/netinet/cc/cc_chd.c<br>index c644d9b2cdb8..52048a7c05ae 100644<br>--- a/sys/netinet/cc/cc_chd.c<br>+++ b/sys/netinet/cc/cc_chd.c<br>@@ -88,10 +88,10 @@<br> /* Largest possible number returned by random(). */<br> #define RANDOM_MAX INT_MAX<br> <br>-static void chd_ack_received(struct cc_var *ccv, uint16_t ack_type);<br>+static void chd_ack_received(struct cc_var *ccv, ccsignal_t ack_type);<br> static void chd_cb_destroy(struct cc_var *ccv);<br> static int chd_cb_init(struct cc_var *ccv, void *ptr);<br>-static void chd_cong_signal(struct cc_var *ccv, uint32_t signal_type);<br>+static void chd_cong_signal(struct cc_var *ccv, ccsignal_t signal_type);<br> static void chd_conn_init(struct cc_var *ccv);<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_measurement)<br> * ack_type == CC_ACK.<br> */<br> static void<br>-chd_ack_received(struct cc_var *ccv, uint16_t ack_type)<br>+chd_ack_received(struct 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 *ccv, 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 = ccv->cc_data;<br> qdly = imax(e_t->rtt, chd_data->maxrtt_in_rtt) - e_t->minrtt;<br> <br>- switch(signal_type) {<br>+ switch((int)signal_type) {<br> case CC_CHD_DELAY:<br> chd_window_decrease(ccv); /* Set new ssthresh. */<br> CCV(ccv, snd_cwnd) = CCV(ccv, snd_ssthresh);<br>@@ -387,6 +387,7 @@ chd_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> <br>diff --git a/sys/netinet/cc/cc_cubic.c b/sys/netinet/cc/cc_cubic.c<br>index eb1587d44427..a9c7592b80ca 100644<br>--- a/sys/netinet/cc/cc_cubic.c<br>+++ b/sys/netinet/cc/cc_cubic.c<br>@@ -73,10 +73,10 @@<br> #include <netinet/cc/cc_cubic.h><br> #include <netinet/cc/cc_module.h><br> <br>-static void cubic_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 *ccv, void *ptr);<br>-static void cubic_cong_signal(struct cc_var *ccv, uint32_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 *ccv);<br>@@ -233,7 +233,7 @@ cubic_does_slow_start(struct cc_var *ccv, struct cubic *cubicd)<br> }<br> <br> static void<br>-cubic_ack_received(struct cc_var *ccv, uint16_t type)<br>+cubic_ack_received(struct cc_var *ccv, ccsignal_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.<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->cwnd_epoch = cubic_data->undo_cwnd_epoch;<br> cubic_data->t_epoch = cubic_data->undo_t_epoch;<br> break;<br>+ default:<br>+ break;<br> }<br> }<br> <br>diff --git a/sys/netinet/cc/cc_dctcp.c b/sys/netinet/cc/cc_dctcp.c<br>index ae0a56839449..374db98c5e60 100644<br>--- a/sys/netinet/cc/cc_dctcp.c<br>+++ b/sys/netinet/cc/cc_dctcp.c<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, ccsignal_t type);<br> static void dctcp_after_idle(struct cc_var *ccv);<br> static void dctcp_cb_destroy(struct cc_var *ccv);<br> static int dctcp_cb_init(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_var *ccv, ccsignal_t type);<br> static void dctcp_conn_init(struct cc_var *ccv);<br> static void dctcp_post_recovery(struct cc_var *ccv);<br> static void dctcp_ecnpkt_handler(struct cc_var *ccv);<br>@@ -104,7 +104,7 @@ struct cc_algo dctcp_cc_algo = {<br> };<br> <br> static void<br>-dctcp_ack_received(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 = 0;<br>@@ -237,7 +237,7 @@ dctcp_cb_init(struct cc_var *ccv, void *ptr)<br> * Perform any necessary tasks before we enter congestion recovery.<br> */<br> static void<br>-dctcp_cong_signal(struct cc_var *ccv, uint32_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> dctcp_data->save_sndnxt += CCV(ccv, t_maxseg);<br> dctcp_data->num_cong_events++;<br> break;<br>+ default:<br>+ break;<br> }<br> } else<br> newreno_cc_cong_signal(ccv, type);<br>diff --git a/sys/netinet/cc/cc_hd.c b/sys/netinet/cc/cc_hd.c<br>index 1a8b62ccf426..82486563f97e 100644<br>--- a/sys/netinet/cc/cc_hd.c<br>+++ b/sys/netinet/cc/cc_hd.c<br>@@ -80,7 +80,7 @@<br> /* Largest possible number returned by random(). */<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(struct 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_backoff(int qdly, int maxqdly)<br> * as NewReno in all other circumstances.<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.c b/sys/netinet/cc/cc_htcp.c<br>index 43224446fd84..41c552a3bfa0 100644<br>--- a/sys/netinet/cc/cc_htcp.c<br>+++ b/sys/netinet/cc/cc_htcp.c<br>@@ -136,10 +136,10 @@<br> (((diff) / hz) * (((diff) << HTCP_ALPHA_INC_SHIFT) / (4 * hz))) \<br> ) >> HTCP_ALPHA_INC_SHIFT)<br> <br>-static void htcp_ack_received(struct cc_var *ccv, uint16_t type);<br>+static void htcp_ack_received(struct cc_var *ccv, ccsignal_t type);<br> static void htcp_cb_destroy(struct cc_var *ccv);<br> static int htcp_cb_init(struct 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(struct cc_var *ccv);<br>@@ -190,7 +190,7 @@ struct cc_algo htcp_cc_algo = {<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.<br> */<br> static void<br>-htcp_cong_signal(struct cc_var *ccv, uint32_t type)<br>+htcp_cong_signal(struct cc_var *ccv, ccsignal_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) >= 2)<br> htcp_data->t_last_cong = ticks;<br> break;<br>+ default:<br>+ break;<br> }<br> }<br> <br>diff --git a/sys/netinet/cc/cc_newreno.c b/sys/netinet/cc/cc_newreno.c<br>index 71f2764ef4bc..aa20e2c64f7d 100644<br>--- a/sys/netinet/cc/cc_newreno.c<br>+++ b/sys/netinet/cc/cc_newreno.c<br>@@ -84,9 +84,9 @@<br> #include <netinet/cc/cc_newreno.h><br> <br> static void newreno_cb_destroy(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 *ccv, 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);<br>+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, void *buf);<br> static void newreno_newround(struct cc_var *ccv, uint32_t round_cnt);<br> static void newreno_rttsample(struct cc_var *ccv, uint32_t usec_rtt, uint32_t rxtcnt, uint32_t fas);<br>@@ -212,7 +212,7 @@ newreno_cb_destroy(struct cc_var *ccv)<br> }<br> <br> static void<br>-newreno_ack_received(struct cc_var *ccv, uint16_t type)<br>+newreno_ack_received(struct cc_var *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 necessary tasks before we enter congestion recovery.<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 *nreno;<br> uint32_t beta, beta_ecn, cwin, factor, mss, pipe;<br>@@ -442,6 +442,8 @@ newreno_cong_signal(struct cc_var *ccv, uint32_t type)<br> }<br> CCV(ccv, snd_cwnd) = mss;<br> break;<br>+ default:<br>+ break;<br> }<br> }<br> <br>diff --git a/sys/netinet/cc/cc_vegas.c b/sys/netinet/cc/cc_vegas.c<br>index aac9c9ce77ff..ecd42c1a0f53 100644<br>--- a/sys/netinet/cc/cc_vegas.c<br>+++ b/sys/netinet/cc/cc_vegas.c<br>@@ -84,12 +84,12 @@<br> * Private signal type for rate based congestion signal.<br> * See <netinet/cc.h> for appropriate bit-range to use for private signals.<br> */<br>-#define CC_VEGAS_RATE 0x01000000<br>+#define CC_VEGAS_RATE 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 void 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> static 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 @@ struct cc_algo vegas_cc_algo = {<br> * has been used.<br> */<br> static void<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 ertt *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 back to newreno's congestion handling.<br> */<br> static void<br>-vegas_cong_signal(struct cc_var *ccv, uint32_t signal_type)<br>+vegas_cong_signal(struct cc_var *ccv, ccsignal_t signal_type)<br> {<br> struct vegas *vegas_data;<br> int presignalrecov;<br>@@ -215,7 +215,7 @@ vegas_cong_signal(struct cc_var *ccv, uint32_t signal_type)<br> else<br> presignalrecov = 0;<br> <br>- switch(signal_type) {<br>+ switch((int)signal_type) {<br> case CC_VEGAS_RATE:<br> if (!IN_RECOVERY(CCV(ccv, t_flags))) {<br> CCV(ccv, snd_cwnd) = 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)) && !presignalrecov)<o:p></o:p></pre> </div> </blockquote> </div> <p class="MsoNormal"><br clear="all"> <o:p></o:p></p> <div> <p class="MsoNormal" style="margin-bottom:12.0pt">Buildworld is now broken for all arches (at least incremental build)<br> <br> Among the errors<br> <br> /home/bapt/worktrees/main/lib/libstats/../../sys/netinet/tcp_stats.c:138:32: error: use of undeclared identifier 'CC_NDUPACK'<o:p></o:p></p> </div> </div> </div> </body> </html>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?PH0PR06MB7639163516643B8783C1DB5186542>
