Skip site navigation (1)Skip section navigation (2)
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>&nbsp;</o:p></span></p>
<div>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:9.0pt;font-family:&quot;Arial&quot;,sans-serif;color:black">Richard
</span></b><span lang="EN-US" style="font-size:8.0pt;font-family:&quot;Arial&quot;,sans-serif"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p>&nbsp;</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 &lt;bapt@FreeBSD.org&gt;
<br>
<b>Sent:</b> Samstag, 24. Februar 2024 19:24<br>
<b>To:</b> Richard Scheffenegger &lt;rscheff@FreeBSD.org&gt;; 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>&nbsp;</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:&quot;Arial&quot;,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 &lt;<a href="mailto:rscheff@FreeBSD.org">rscheff@FreeBSD.org</a>&gt; a écrit&nbsp;:<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:&nbsp;&nbsp;&nbsp;&nbsp; Richard Scheffenegger &lt;<a href="mailto:rscheff@FreeBSD.org">rscheff@FreeBSD.org</a>&gt;<br>AuthorDate: 2024-02-24 15:41:31 +0000<br>Commit:&nbsp;&nbsp;&nbsp;&nbsp; Richard Scheffenegger &lt;<a href="mailto:rscheff@FreeBSD.org">rscheff@FreeBSD.org</a>&gt;<br>CommitDate: 2024-02-24 15:41:48 +0000<br><br>&nbsp;&nbsp;&nbsp; tcp: use enum for all congestion control signals<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;Facilitate easier troubleshooting by enumerating<br>&nbsp;&nbsp;&nbsp; all congestion control signals. Typecast the<br>&nbsp;&nbsp;&nbsp; enum to int, when a congestion control module uses<br>&nbsp;&nbsp;&nbsp; private signals.<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;No external change.<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;Reviewed By:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glebius, tuexen, #transport<br>&nbsp;&nbsp;&nbsp; Sponsored by:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetApp, Inc.<br>&nbsp;&nbsp;&nbsp; Differential Revision:&nbsp; <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&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 2 +-<br> sys/netinet/cc/cc.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 42 +++++++++++++++++++++---------------------<br> sys/netinet/cc/cc_cdg.c&nbsp;&nbsp;&nbsp;&nbsp; | 10 +++++-----<br> sys/netinet/cc/cc_chd.c&nbsp;&nbsp;&nbsp;&nbsp; | 11 ++++++-----<br> sys/netinet/cc/cc_cubic.c&nbsp;&nbsp; | 10 ++++++----<br> sys/netinet/cc/cc_dctcp.c&nbsp;&nbsp; | 10 ++++++----<br> sys/netinet/cc/cc_hd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 4 ++--<br> sys/netinet/cc/cc_htcp.c&nbsp;&nbsp;&nbsp; | 10 ++++++----<br> sys/netinet/cc/cc_newreno.c | 10 ++++++----<br> sys/netinet/cc/cc_vegas.c&nbsp;&nbsp; | 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>&nbsp;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> &nbsp;&nbsp;&nbsp;&nbsp; if (type == CC_ACK &amp;&amp; !IN_RECOVERY(CCV(ccv, t_flags)) &amp;&amp;<br> &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;(ccv-&gt;flags &amp; 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&nbsp;&nbsp;&nbsp; 0x0800&nbsp; /* Can hystart when going CSS -&gt; CA slam the cwnd */<br> #define CCF_HYSTART_CONS_SSTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x1000&nbsp; /* Should hystart use the more conservative ssthresh */<br> <br>-/* ACK types passed to the ack_received() hook. */<br>-#define&nbsp;&nbsp;&nbsp;&nbsp; CC_ACK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0001&nbsp; /* Regular in sequence ACK. */<br>-#define&nbsp;&nbsp;&nbsp;&nbsp; CC_DUPACK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0002&nbsp; /* Duplicate ACK. */<br>-#define&nbsp;&nbsp;&nbsp;&nbsp; CC_PARTIALACK&nbsp; 0x0004&nbsp; /* Not yet. */<br>-#define&nbsp;&nbsp;&nbsp;&nbsp; CC_SACK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0008&nbsp; /* Not yet. */<br>+typedef enum {<br>+&nbsp;&nbsp;&nbsp;&nbsp; /* ACK types passed to the ack_received() hook. */<br>+&nbsp;&nbsp;&nbsp;&nbsp; CC_ACK =&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0001, /* Regular in sequence ACK. */<br>+&nbsp;&nbsp;&nbsp;&nbsp; CC_DUPACK =&nbsp;&nbsp;&nbsp; 0x0002, /* Duplicate ACK. */<br>+&nbsp;&nbsp;&nbsp;&nbsp; CC_PARTIALACK = 0x0004, /* Not yet. */<br>+&nbsp;&nbsp;&nbsp;&nbsp; CC_SACK =&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0008, /* Not yet. */<br>+&nbsp;&nbsp;&nbsp;&nbsp; /* Congestion signal types passed to the cong_signal() hook. */<br>+&nbsp;&nbsp;&nbsp;&nbsp; CC_ECN =&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0100, /* ECN marked packet received. */<br>+&nbsp;&nbsp;&nbsp;&nbsp; CC_RTO =&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0200, /* RTO fired. */<br>+&nbsp;&nbsp;&nbsp;&nbsp; CC_RTO_ERR =&nbsp;&nbsp; 0x0400, /* RTO fired in error. */<br>+&nbsp;&nbsp;&nbsp;&nbsp; CC_NDUPACK =&nbsp;&nbsp; 0x0800, /* Threshold of dupack's reached. */<br>+&nbsp;&nbsp;&nbsp;&nbsp; /*<br>+&nbsp;&nbsp;&nbsp;&nbsp;  * The highest order 8 bits (0x01000000 - 0x80000000) are reserved<br>+&nbsp;&nbsp;&nbsp;&nbsp;  * for CC algos to declare their own congestion signal types.<br>+&nbsp;&nbsp;&nbsp;&nbsp;  */<br>+&nbsp;&nbsp;&nbsp;&nbsp; CC_SIGPRIVMASK = 0xFF000000&nbsp;&nbsp;&nbsp; /* 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&nbsp;&nbsp;&nbsp;&nbsp; CC_ECN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x00000001&nbsp;&nbsp;&nbsp;&nbsp; /* ECN marked packet received. */<br>-#define&nbsp;&nbsp;&nbsp;&nbsp; CC_RTO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x00000002&nbsp;&nbsp;&nbsp;&nbsp; /* RTO fired. */<br>-#define&nbsp;&nbsp;&nbsp;&nbsp; CC_RTO_ERR&nbsp;&nbsp;&nbsp;&nbsp; 0x00000004&nbsp;&nbsp;&nbsp;&nbsp; /* RTO fired in error. */<br>-#define&nbsp;&nbsp;&nbsp;&nbsp; CC_NDUPACK&nbsp;&nbsp;&nbsp;&nbsp; 0x00000008&nbsp;&nbsp;&nbsp;&nbsp; /* Threshold of dupack's reached. */<br>-<br>-#define&nbsp;&nbsp;&nbsp;&nbsp; CC_SIGPRIVMASK 0xFF000000&nbsp;&nbsp;&nbsp;&nbsp; /* Mask to check if sig is private. */<br>-<br> #ifdef _KERNEL<br> /*<br>&nbsp; * Structure to hold data and function pointers that together represent a<br>@@ -175,10 +175,10 @@ struct cc_algo {<br> &nbsp;&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp;&nbsp; (*conn_init)(struct cc_var *ccv);<br> <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Called on receipt of an ack. */<br>-&nbsp;&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp;&nbsp; (*ack_received)(struct cc_var *ccv, uint16_t type);<br>+&nbsp;&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp;&nbsp; (*ack_received)(struct cc_var *ccv, ccsignal_t type);<br> <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Called on detection of a congestion signal. */<br>-&nbsp;&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp;&nbsp; (*cong_signal)(struct cc_var *ccv, uint32_t type);<br>+&nbsp;&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp;&nbsp; (*cong_signal)(struct cc_var *ccv, ccsignal_t type);<br> <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Called after exiting congestion recovery. */<br> &nbsp;&nbsp;&nbsp;&nbsp; void&nbsp;&nbsp;&nbsp; (*post_recovery)(struct cc_var *ccv);<br>@@ -236,8 +236,8 @@ extern struct rwlock cc_list_lock;<br>&nbsp; */<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>&nbsp;/* 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>&nbsp;struct cc_algo cdg_cc_algo = {<br>@@ -450,11 +450,11 @@ cdg_window_increase(struct cc_var *ccv, int new_measurement)<br> }<br> <br>&nbsp;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> &nbsp;&nbsp;&nbsp;&nbsp; struct cdg *cdg_data = ccv-&gt;cc_data;<br> <br>-&nbsp;&nbsp;&nbsp;&nbsp; switch(signal_type) {<br>+&nbsp;&nbsp;&nbsp;&nbsp; switch((int)signal_type) {<br> &nbsp;&nbsp;&nbsp;&nbsp; case CC_CDG_DELAY:<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CCV(ccv, snd_ssthresh) = cdg_window_decrease(ccv,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;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> &nbsp;&nbsp;&nbsp;&nbsp; struct cdg *cdg_data;<br> &nbsp;&nbsp;&nbsp;&nbsp; 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&nbsp;&nbsp;&nbsp;&nbsp; RANDOM_MAX&nbsp;&nbsp;&nbsp;&nbsp; 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&nbsp; 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&nbsp; chd_mod_init(void);<br> static size_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chd_data_sz(void);<br>@@ -235,7 +235,7 @@ chd_window_increase(struct cc_var *ccv, int new_measurement)<br>&nbsp; * ack_type == CC_ACK.<br>&nbsp; */<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> &nbsp;&nbsp;&nbsp;&nbsp; struct chd *chd_data;<br> &nbsp;&nbsp;&nbsp;&nbsp; struct ertt *e_t;<br>@@ -336,7 +336,7 @@ chd_cb_init(struct cc_var *ccv, void *ptr)<br> }<br> <br>&nbsp;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> &nbsp;&nbsp;&nbsp;&nbsp; struct ertt *e_t;<br> &nbsp;&nbsp;&nbsp;&nbsp; struct chd *chd_data;<br>@@ -346,7 +346,7 @@ chd_cong_signal(struct cc_var *ccv, uint32_t signal_type)<br> &nbsp;&nbsp;&nbsp;&nbsp; chd_data = ccv-&gt;cc_data;<br> &nbsp;&nbsp;&nbsp;&nbsp; qdly = imax(e_t-&gt;rtt, chd_data-&gt;maxrtt_in_rtt) - e_t-&gt;minrtt;<br> <br>-&nbsp;&nbsp;&nbsp;&nbsp; switch(signal_type) {<br>+&nbsp;&nbsp;&nbsp;&nbsp; switch((int)signal_type) {<br> &nbsp;&nbsp;&nbsp;&nbsp; case CC_CHD_DELAY:<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chd_window_decrease(ccv); /* Set new ssthresh. */<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newreno_cc_cong_signal(ccv, signal_type);<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br> &nbsp;&nbsp;&nbsp;&nbsp; }<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 &lt;netinet/cc/cc_cubic.h&gt;<br> #include &lt;netinet/cc/cc_module.h&gt;<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&nbsp; 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&nbsp; 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>&nbsp;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> &nbsp;&nbsp;&nbsp;&nbsp; struct cubic *cubic_data;<br> &nbsp;&nbsp;&nbsp;&nbsp; unsigned long W_est, W_cubic;<br>@@ -417,7 +417,7 @@ cubic_cb_init(struct cc_var *ccv, void *ptr)<br>&nbsp; * Perform any necessary tasks before we enter congestion recovery.<br>&nbsp; */<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> &nbsp;&nbsp;&nbsp;&nbsp; struct cubic *cubic_data;<br> &nbsp;&nbsp;&nbsp;&nbsp; uint32_t mss, pipe;<br>@@ -503,6 +503,8 @@ cubic_cong_signal(struct cc_var *ccv, uint32_t type)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cubic_data-&gt;cwnd_epoch = cubic_data-&gt;undo_cwnd_epoch;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cubic_data-&gt;t_epoch = cubic_data-&gt;undo_t_epoch;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>+&nbsp;&nbsp;&nbsp;&nbsp; default:<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br> &nbsp;&nbsp;&nbsp;&nbsp; }<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> &nbsp;&nbsp;&nbsp;&nbsp; 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&nbsp; 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>&nbsp;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> &nbsp;&nbsp;&nbsp;&nbsp; struct dctcp *dctcp_data;<br> &nbsp;&nbsp;&nbsp;&nbsp; int bytes_acked = 0;<br>@@ -237,7 +237,7 @@ dctcp_cb_init(struct cc_var *ccv, void *ptr)<br>&nbsp; * Perform any necessary tasks before we enter congestion recovery.<br>&nbsp; */<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> &nbsp;&nbsp;&nbsp;&nbsp; struct dctcp *dctcp_data;<br> &nbsp;&nbsp;&nbsp;&nbsp; uint32_t cwin, mss, pipe;<br>@@ -308,6 +308,8 @@ dctcp_cong_signal(struct cc_var *ccv, uint32_t type)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dctcp_data-&gt;save_sndnxt += CCV(ccv, t_maxseg);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dctcp_data-&gt;num_cong_events++;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br> &nbsp;&nbsp;&nbsp;&nbsp; } else<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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&nbsp;&nbsp;&nbsp;&nbsp; RANDOM_MAX&nbsp;&nbsp;&nbsp;&nbsp; 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&nbsp; hd_mod_init(void);<br> static size_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hd_data_sz(void);<br> <br>@@ -138,7 +138,7 @@ should_backoff(int qdly, int maxqdly)<br>&nbsp; * as NewReno in all other circumstances.<br>&nbsp; */<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> &nbsp;&nbsp;&nbsp;&nbsp; struct ertt *e_t;<br> &nbsp;&nbsp;&nbsp;&nbsp; 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> &nbsp;&nbsp;&nbsp;&nbsp; (((diff) / hz) * (((diff) &lt;&lt; HTCP_ALPHA_INC_SHIFT) / (4 * hz))) \<br> ) &gt;&gt; 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&nbsp; 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&nbsp; 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>&nbsp;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> &nbsp;&nbsp;&nbsp;&nbsp; struct htcp *htcp_data;<br> <br>@@ -278,7 +278,7 @@ htcp_cb_init(struct cc_var *ccv, void *ptr)<br>&nbsp; * Perform any necessary tasks before we enter congestion recovery.<br>&nbsp; */<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> &nbsp;&nbsp;&nbsp;&nbsp; struct htcp *htcp_data;<br> &nbsp;&nbsp;&nbsp;&nbsp; uint32_t mss, pipe;<br>@@ -345,6 +345,8 @@ htcp_cong_signal(struct cc_var *ccv, uint32_t type)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (CCV(ccv, t_rxtshift) &gt;= 2)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; htcp_data-&gt;t_last_cong = ticks;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>+&nbsp;&nbsp;&nbsp;&nbsp; default:<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br> &nbsp;&nbsp;&nbsp;&nbsp; }<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 &lt;netinet/cc/cc_newreno.h&gt;<br> <br>&nbsp;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>&nbsp;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> &nbsp;&nbsp;&nbsp;&nbsp; struct newreno *nreno;<br> <br>@@ -363,7 +363,7 @@ newreno_after_idle(struct cc_var *ccv)<br>&nbsp; * Perform any necessary tasks before we enter congestion recovery.<br>&nbsp; */<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> &nbsp;&nbsp;&nbsp;&nbsp; struct newreno *nreno;<br> &nbsp;&nbsp;&nbsp;&nbsp; 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> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CCV(ccv, snd_cwnd) = mss;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>+&nbsp;&nbsp;&nbsp;&nbsp; default:<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br> &nbsp;&nbsp;&nbsp;&nbsp; }<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>&nbsp; * Private signal type for rate based congestion signal.<br>&nbsp; * See &lt;netinet/cc.h&gt; for appropriate bit-range to use for private signals.<br>&nbsp; */<br>-#define&nbsp;&nbsp;&nbsp;&nbsp; CC_VEGAS_RATE&nbsp; 0x01000000<br>+#define&nbsp;&nbsp;&nbsp;&nbsp; CC_VEGAS_RATE&nbsp; 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&nbsp; 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&nbsp; vegas_mod_init(void);<br> static size_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vegas_data_sz(void);<br>@@ -124,7 +124,7 @@ struct cc_algo vegas_cc_algo = {<br>&nbsp; * has been used.<br>&nbsp; */<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> &nbsp;&nbsp;&nbsp;&nbsp; struct ertt *e_t;<br> &nbsp;&nbsp;&nbsp;&nbsp; struct vegas *vegas_data;<br>@@ -203,7 +203,7 @@ vegas_cb_init(struct cc_var *ccv, void *ptr)<br>&nbsp; * handled here, otherwise it falls back to newreno's congestion handling.<br>&nbsp; */<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> &nbsp;&nbsp;&nbsp;&nbsp; struct vegas *vegas_data;<br> &nbsp;&nbsp;&nbsp;&nbsp; int presignalrecov;<br>@@ -215,7 +215,7 @@ vegas_cong_signal(struct cc_var *ccv, uint32_t signal_type)<br> &nbsp;&nbsp;&nbsp;&nbsp; else<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; presignalrecov = 0;<br> <br>-&nbsp;&nbsp;&nbsp;&nbsp; switch(signal_type) {<br>+&nbsp;&nbsp;&nbsp;&nbsp; switch((int)signal_type) {<br> &nbsp;&nbsp;&nbsp;&nbsp; case CC_VEGAS_RATE:<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!IN_RECOVERY(CCV(ccv, t_flags))) {<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newreno_cc_cong_signal(ccv, signal_type);<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br> &nbsp;&nbsp;&nbsp;&nbsp; }<br> <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (IN_RECOVERY(CCV(ccv, t_flags)) &amp;&amp; !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>