From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Eric Dumazet <edumazet@google.com>,
Yuchung Cheng <ycheng@google.com>,
Neal Cardwell <ncardwell@google.com>,
Jakub Kicinski <kuba@kernel.org>, Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.17 099/298] tcp: add accessors to read/set tp->snd_cwnd
Date: Mon, 13 Jun 2022 12:09:53 +0200 [thread overview]
Message-ID: <20220613094927.953566353@linuxfoundation.org> (raw)
In-Reply-To: <20220613094924.913340374@linuxfoundation.org>
From: Eric Dumazet <edumazet@google.com>
[ Upstream commit 40570375356c874b1578e05c1dcc3ff7c1322dbe ]
We had various bugs over the years with code
breaking the assumption that tp->snd_cwnd is greater
than zero.
Lately, syzbot reported the WARN_ON_ONCE(!tp->prior_cwnd) added
in commit 8b8a321ff72c ("tcp: fix zero cwnd in tcp_cwnd_reduction")
can trigger, and without a repro we would have to spend
considerable time finding the bug.
Instead of complaining too late, we want to catch where
and when tp->snd_cwnd is set to an illegal value.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Suggested-by: Yuchung Cheng <ycheng@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Acked-by: Yuchung Cheng <ycheng@google.com>
Link: https://lore.kernel.org/r/20220405233538.947344-1-eric.dumazet@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/net/tcp.h | 19 +++++++++++++++----
include/trace/events/tcp.h | 2 +-
net/core/filter.c | 2 +-
net/ipv4/tcp.c | 8 ++++----
net/ipv4/tcp_bbr.c | 20 ++++++++++----------
net/ipv4/tcp_bic.c | 14 +++++++-------
net/ipv4/tcp_cdg.c | 30 +++++++++++++++---------------
net/ipv4/tcp_cong.c | 18 +++++++++---------
net/ipv4/tcp_cubic.c | 22 +++++++++++-----------
net/ipv4/tcp_dctcp.c | 11 ++++++-----
net/ipv4/tcp_highspeed.c | 18 +++++++++---------
net/ipv4/tcp_htcp.c | 10 +++++-----
net/ipv4/tcp_hybla.c | 18 +++++++++---------
net/ipv4/tcp_illinois.c | 12 +++++++-----
net/ipv4/tcp_input.c | 36 ++++++++++++++++++------------------
net/ipv4/tcp_ipv4.c | 2 +-
net/ipv4/tcp_lp.c | 6 +++---
net/ipv4/tcp_metrics.c | 12 ++++++------
net/ipv4/tcp_nv.c | 24 ++++++++++++------------
net/ipv4/tcp_output.c | 30 +++++++++++++++---------------
net/ipv4/tcp_rate.c | 2 +-
net/ipv4/tcp_scalable.c | 4 ++--
net/ipv4/tcp_vegas.c | 21 +++++++++++----------
net/ipv4/tcp_veno.c | 24 ++++++++++++------------
net/ipv4/tcp_westwood.c | 3 ++-
net/ipv4/tcp_yeah.c | 30 +++++++++++++++---------------
net/ipv6/tcp_ipv6.c | 2 +-
27 files changed, 208 insertions(+), 192 deletions(-)
diff --git a/include/net/tcp.h b/include/net/tcp.h
index a3fe2f9bc01c..818ac8077381 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -1215,9 +1215,20 @@ static inline unsigned int tcp_packets_in_flight(const struct tcp_sock *tp)
#define TCP_INFINITE_SSTHRESH 0x7fffffff
+static inline u32 tcp_snd_cwnd(const struct tcp_sock *tp)
+{
+ return tp->snd_cwnd;
+}
+
+static inline void tcp_snd_cwnd_set(struct tcp_sock *tp, u32 val)
+{
+ WARN_ON_ONCE((int)val <= 0);
+ tp->snd_cwnd = val;
+}
+
static inline bool tcp_in_slow_start(const struct tcp_sock *tp)
{
- return tp->snd_cwnd < tp->snd_ssthresh;
+ return tcp_snd_cwnd(tp) < tp->snd_ssthresh;
}
static inline bool tcp_in_initial_slowstart(const struct tcp_sock *tp)
@@ -1243,8 +1254,8 @@ static inline __u32 tcp_current_ssthresh(const struct sock *sk)
return tp->snd_ssthresh;
else
return max(tp->snd_ssthresh,
- ((tp->snd_cwnd >> 1) +
- (tp->snd_cwnd >> 2)));
+ ((tcp_snd_cwnd(tp) >> 1) +
+ (tcp_snd_cwnd(tp) >> 2)));
}
/* Use define here intentionally to get WARN_ON location shown at the caller */
@@ -1286,7 +1297,7 @@ static inline bool tcp_is_cwnd_limited(const struct sock *sk)
/* If in slow start, ensure cwnd grows to twice what was ACKed. */
if (tcp_in_slow_start(tp))
- return tp->snd_cwnd < 2 * tp->max_packets_out;
+ return tcp_snd_cwnd(tp) < 2 * tp->max_packets_out;
return tp->is_cwnd_limited;
}
diff --git a/include/trace/events/tcp.h b/include/trace/events/tcp.h
index 521059d8dc0a..edcd6369de10 100644
--- a/include/trace/events/tcp.h
+++ b/include/trace/events/tcp.h
@@ -279,7 +279,7 @@ TRACE_EVENT(tcp_probe,
__entry->data_len = skb->len - __tcp_hdrlen(th);
__entry->snd_nxt = tp->snd_nxt;
__entry->snd_una = tp->snd_una;
- __entry->snd_cwnd = tp->snd_cwnd;
+ __entry->snd_cwnd = tcp_snd_cwnd(tp);
__entry->snd_wnd = tp->snd_wnd;
__entry->rcv_wnd = tp->rcv_wnd;
__entry->ssthresh = tcp_current_ssthresh(sk);
diff --git a/net/core/filter.c b/net/core/filter.c
index f8fbb5fa74f3..4210b127c5f5 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -4937,7 +4937,7 @@ static int _bpf_setsockopt(struct sock *sk, int level, int optname,
if (val <= 0 || tp->data_segs_out > tp->syn_data)
ret = -EINVAL;
else
- tp->snd_cwnd = val;
+ tcp_snd_cwnd_set(tp, val);
break;
case TCP_BPF_SNDCWND_CLAMP:
if (val <= 0) {
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 28ff2a820f7c..c9ad372f8edb 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -429,7 +429,7 @@ void tcp_init_sock(struct sock *sk)
* algorithms that we must have the following bandaid to talk
* efficiently to them. -DaveM
*/
- tp->snd_cwnd = TCP_INIT_CWND;
+ tcp_snd_cwnd_set(tp, TCP_INIT_CWND);
/* There's a bubble in the pipe until at least the first ACK. */
tp->app_limited = ~0U;
@@ -3033,7 +3033,7 @@ int tcp_disconnect(struct sock *sk, int flags)
icsk->icsk_rto_min = TCP_RTO_MIN;
icsk->icsk_delack_max = TCP_DELACK_MAX;
tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;
- tp->snd_cwnd = TCP_INIT_CWND;
+ tcp_snd_cwnd_set(tp, TCP_INIT_CWND);
tp->snd_cwnd_cnt = 0;
tp->window_clamp = 0;
tp->delivered = 0;
@@ -3744,7 +3744,7 @@ void tcp_get_info(struct sock *sk, struct tcp_info *info)
info->tcpi_max_pacing_rate = rate64;
info->tcpi_reordering = tp->reordering;
- info->tcpi_snd_cwnd = tp->snd_cwnd;
+ info->tcpi_snd_cwnd = tcp_snd_cwnd(tp);
if (info->tcpi_state == TCP_LISTEN) {
/* listeners aliased fields :
@@ -3915,7 +3915,7 @@ struct sk_buff *tcp_get_timestamping_opt_stats(const struct sock *sk,
rate64 = tcp_compute_delivery_rate(tp);
nla_put_u64_64bit(stats, TCP_NLA_DELIVERY_RATE, rate64, TCP_NLA_PAD);
- nla_put_u32(stats, TCP_NLA_SND_CWND, tp->snd_cwnd);
+ nla_put_u32(stats, TCP_NLA_SND_CWND, tcp_snd_cwnd(tp));
nla_put_u32(stats, TCP_NLA_REORDERING, tp->reordering);
nla_put_u32(stats, TCP_NLA_MIN_RTT, tcp_min_rtt(tp));
diff --git a/net/ipv4/tcp_bbr.c b/net/ipv4/tcp_bbr.c
index ec5550089b4d..aefe12b7dbf7 100644
--- a/net/ipv4/tcp_bbr.c
+++ b/net/ipv4/tcp_bbr.c
@@ -276,7 +276,7 @@ static void bbr_init_pacing_rate_from_rtt(struct sock *sk)
} else { /* no RTT sample yet */
rtt_us = USEC_PER_MSEC; /* use nominal default RTT */
}
- bw = (u64)tp->snd_cwnd * BW_UNIT;
+ bw = (u64)tcp_snd_cwnd(tp) * BW_UNIT;
do_div(bw, rtt_us);
sk->sk_pacing_rate = bbr_bw_to_pacing_rate(sk, bw, bbr_high_gain);
}
@@ -323,9 +323,9 @@ static void bbr_save_cwnd(struct sock *sk)
struct bbr *bbr = inet_csk_ca(sk);
if (bbr->prev_ca_state < TCP_CA_Recovery && bbr->mode != BBR_PROBE_RTT)
- bbr->prior_cwnd = tp->snd_cwnd; /* this cwnd is good enough */
+ bbr->prior_cwnd = tcp_snd_cwnd(tp); /* this cwnd is good enough */
else /* loss recovery or BBR_PROBE_RTT have temporarily cut cwnd */
- bbr->prior_cwnd = max(bbr->prior_cwnd, tp->snd_cwnd);
+ bbr->prior_cwnd = max(bbr->prior_cwnd, tcp_snd_cwnd(tp));
}
static void bbr_cwnd_event(struct sock *sk, enum tcp_ca_event event)
@@ -482,7 +482,7 @@ static bool bbr_set_cwnd_to_recover_or_restore(
struct tcp_sock *tp = tcp_sk(sk);
struct bbr *bbr = inet_csk_ca(sk);
u8 prev_state = bbr->prev_ca_state, state = inet_csk(sk)->icsk_ca_state;
- u32 cwnd = tp->snd_cwnd;
+ u32 cwnd = tcp_snd_cwnd(tp);
/* An ACK for P pkts should release at most 2*P packets. We do this
* in two steps. First, here we deduct the number of lost packets.
@@ -520,7 +520,7 @@ static void bbr_set_cwnd(struct sock *sk, const struct rate_sample *rs,
{
struct tcp_sock *tp = tcp_sk(sk);
struct bbr *bbr = inet_csk_ca(sk);
- u32 cwnd = tp->snd_cwnd, target_cwnd = 0;
+ u32 cwnd = tcp_snd_cwnd(tp), target_cwnd = 0;
if (!acked)
goto done; /* no packet fully ACKed; just apply caps */
@@ -544,9 +544,9 @@ static void bbr_set_cwnd(struct sock *sk, const struct rate_sample *rs,
cwnd = max(cwnd, bbr_cwnd_min_target);
done:
- tp->snd_cwnd = min(cwnd, tp->snd_cwnd_clamp); /* apply global cap */
+ tcp_snd_cwnd_set(tp, min(cwnd, tp->snd_cwnd_clamp)); /* apply global cap */
if (bbr->mode == BBR_PROBE_RTT) /* drain queue, refresh min_rtt */
- tp->snd_cwnd = min(tp->snd_cwnd, bbr_cwnd_min_target);
+ tcp_snd_cwnd_set(tp, min(tcp_snd_cwnd(tp), bbr_cwnd_min_target));
}
/* End cycle phase if it's time and/or we hit the phase's in-flight target. */
@@ -856,7 +856,7 @@ static void bbr_update_ack_aggregation(struct sock *sk,
bbr->ack_epoch_acked = min_t(u32, 0xFFFFF,
bbr->ack_epoch_acked + rs->acked_sacked);
extra_acked = bbr->ack_epoch_acked - expected_acked;
- extra_acked = min(extra_acked, tp->snd_cwnd);
+ extra_acked = min(extra_acked, tcp_snd_cwnd(tp));
if (extra_acked > bbr->extra_acked[bbr->extra_acked_win_idx])
bbr->extra_acked[bbr->extra_acked_win_idx] = extra_acked;
}
@@ -914,7 +914,7 @@ static void bbr_check_probe_rtt_done(struct sock *sk)
return;
bbr->min_rtt_stamp = tcp_jiffies32; /* wait a while until PROBE_RTT */
- tp->snd_cwnd = max(tp->snd_cwnd, bbr->prior_cwnd);
+ tcp_snd_cwnd_set(tp, max(tcp_snd_cwnd(tp), bbr->prior_cwnd));
bbr_reset_mode(sk);
}
@@ -1093,7 +1093,7 @@ static u32 bbr_undo_cwnd(struct sock *sk)
bbr->full_bw = 0; /* spurious slow-down; reset full pipe detection */
bbr->full_bw_cnt = 0;
bbr_reset_lt_bw_sampling(sk);
- return tcp_sk(sk)->snd_cwnd;
+ return tcp_snd_cwnd(tcp_sk(sk));
}
/* Entering loss recovery, so save cwnd for when we exit or undo recovery. */
diff --git a/net/ipv4/tcp_bic.c b/net/ipv4/tcp_bic.c
index f5f588b1f6e9..58358bf92e1b 100644
--- a/net/ipv4/tcp_bic.c
+++ b/net/ipv4/tcp_bic.c
@@ -150,7 +150,7 @@ static void bictcp_cong_avoid(struct sock *sk, u32 ack, u32 acked)
if (!acked)
return;
}
- bictcp_update(ca, tp->snd_cwnd);
+ bictcp_update(ca, tcp_snd_cwnd(tp));
tcp_cong_avoid_ai(tp, ca->cnt, acked);
}
@@ -166,16 +166,16 @@ static u32 bictcp_recalc_ssthresh(struct sock *sk)
ca->epoch_start = 0; /* end of epoch */
/* Wmax and fast convergence */
- if (tp->snd_cwnd < ca->last_max_cwnd && fast_convergence)
- ca->last_max_cwnd = (tp->snd_cwnd * (BICTCP_BETA_SCALE + beta))
+ if (tcp_snd_cwnd(tp) < ca->last_max_cwnd && fast_convergence)
+ ca->last_max_cwnd = (tcp_snd_cwnd(tp) * (BICTCP_BETA_SCALE + beta))
/ (2 * BICTCP_BETA_SCALE);
else
- ca->last_max_cwnd = tp->snd_cwnd;
+ ca->last_max_cwnd = tcp_snd_cwnd(tp);
- if (tp->snd_cwnd <= low_window)
- return max(tp->snd_cwnd >> 1U, 2U);
+ if (tcp_snd_cwnd(tp) <= low_window)
+ return max(tcp_snd_cwnd(tp) >> 1U, 2U);
else
- return max((tp->snd_cwnd * beta) / BICTCP_BETA_SCALE, 2U);
+ return max((tcp_snd_cwnd(tp) * beta) / BICTCP_BETA_SCALE, 2U);
}
static void bictcp_state(struct sock *sk, u8 new_state)
diff --git a/net/ipv4/tcp_cdg.c b/net/ipv4/tcp_cdg.c
index 709d23801823..ddc7ba0554bd 100644
--- a/net/ipv4/tcp_cdg.c
+++ b/net/ipv4/tcp_cdg.c
@@ -161,8 +161,8 @@ static void tcp_cdg_hystart_update(struct sock *sk)
LINUX_MIB_TCPHYSTARTTRAINDETECT);
NET_ADD_STATS(sock_net(sk),
LINUX_MIB_TCPHYSTARTTRAINCWND,
- tp->snd_cwnd);
- tp->snd_ssthresh = tp->snd_cwnd;
+ tcp_snd_cwnd(tp));
+ tp->snd_ssthresh = tcp_snd_cwnd(tp);
return;
}
}
@@ -180,8 +180,8 @@ static void tcp_cdg_hystart_update(struct sock *sk)
LINUX_MIB_TCPHYSTARTDELAYDETECT);
NET_ADD_STATS(sock_net(sk),
LINUX_MIB_TCPHYSTARTDELAYCWND,
- tp->snd_cwnd);
- tp->snd_ssthresh = tp->snd_cwnd;
+ tcp_snd_cwnd(tp));
+ tp->snd_ssthresh = tcp_snd_cwnd(tp);
}
}
}
@@ -252,7 +252,7 @@ static bool tcp_cdg_backoff(struct sock *sk, u32 grad)
return false;
}
- ca->shadow_wnd = max(ca->shadow_wnd, tp->snd_cwnd);
+ ca->shadow_wnd = max(ca->shadow_wnd, tcp_snd_cwnd(tp));
ca->state = CDG_BACKOFF;
tcp_enter_cwr(sk);
return true;
@@ -285,14 +285,14 @@ static void tcp_cdg_cong_avoid(struct sock *sk, u32 ack, u32 acked)
}
if (!tcp_is_cwnd_limited(sk)) {
- ca->shadow_wnd = min(ca->shadow_wnd, tp->snd_cwnd);
+ ca->shadow_wnd = min(ca->shadow_wnd, tcp_snd_cwnd(tp));
return;
}
- prior_snd_cwnd = tp->snd_cwnd;
+ prior_snd_cwnd = tcp_snd_cwnd(tp);
tcp_reno_cong_avoid(sk, ack, acked);
- incr = tp->snd_cwnd - prior_snd_cwnd;
+ incr = tcp_snd_cwnd(tp) - prior_snd_cwnd;
ca->shadow_wnd = max(ca->shadow_wnd, ca->shadow_wnd + incr);
}
@@ -331,15 +331,15 @@ static u32 tcp_cdg_ssthresh(struct sock *sk)
struct tcp_sock *tp = tcp_sk(sk);
if (ca->state == CDG_BACKOFF)
- return max(2U, (tp->snd_cwnd * min(1024U, backoff_beta)) >> 10);
+ return max(2U, (tcp_snd_cwnd(tp) * min(1024U, backoff_beta)) >> 10);
if (ca->state == CDG_NONFULL && use_tolerance)
- return tp->snd_cwnd;
+ return tcp_snd_cwnd(tp);
- ca->shadow_wnd = min(ca->shadow_wnd >> 1, tp->snd_cwnd);
+ ca->shadow_wnd = min(ca->shadow_wnd >> 1, tcp_snd_cwnd(tp));
if (use_shadow)
- return max3(2U, ca->shadow_wnd, tp->snd_cwnd >> 1);
- return max(2U, tp->snd_cwnd >> 1);
+ return max3(2U, ca->shadow_wnd, tcp_snd_cwnd(tp) >> 1);
+ return max(2U, tcp_snd_cwnd(tp) >> 1);
}
static void tcp_cdg_cwnd_event(struct sock *sk, const enum tcp_ca_event ev)
@@ -357,7 +357,7 @@ static void tcp_cdg_cwnd_event(struct sock *sk, const enum tcp_ca_event ev)
ca->gradients = gradients;
ca->rtt_seq = tp->snd_nxt;
- ca->shadow_wnd = tp->snd_cwnd;
+ ca->shadow_wnd = tcp_snd_cwnd(tp);
break;
case CA_EVENT_COMPLETE_CWR:
ca->state = CDG_UNKNOWN;
@@ -380,7 +380,7 @@ static void tcp_cdg_init(struct sock *sk)
ca->gradients = kcalloc(window, sizeof(ca->gradients[0]),
GFP_NOWAIT | __GFP_NOWARN);
ca->rtt_seq = tp->snd_nxt;
- ca->shadow_wnd = tp->snd_cwnd;
+ ca->shadow_wnd = tcp_snd_cwnd(tp);
}
static void tcp_cdg_release(struct sock *sk)
diff --git a/net/ipv4/tcp_cong.c b/net/ipv4/tcp_cong.c
index db5831e6c136..f43db30a7195 100644
--- a/net/ipv4/tcp_cong.c
+++ b/net/ipv4/tcp_cong.c
@@ -395,10 +395,10 @@ int tcp_set_congestion_control(struct sock *sk, const char *name, bool load,
*/
u32 tcp_slow_start(struct tcp_sock *tp, u32 acked)
{
- u32 cwnd = min(tp->snd_cwnd + acked, tp->snd_ssthresh);
+ u32 cwnd = min(tcp_snd_cwnd(tp) + acked, tp->snd_ssthresh);
- acked -= cwnd - tp->snd_cwnd;
- tp->snd_cwnd = min(cwnd, tp->snd_cwnd_clamp);
+ acked -= cwnd - tcp_snd_cwnd(tp);
+ tcp_snd_cwnd_set(tp, min(cwnd, tp->snd_cwnd_clamp));
return acked;
}
@@ -412,7 +412,7 @@ void tcp_cong_avoid_ai(struct tcp_sock *tp, u32 w, u32 acked)
/* If credits accumulated at a higher w, apply them gently now. */
if (tp->snd_cwnd_cnt >= w) {
tp->snd_cwnd_cnt = 0;
- tp->snd_cwnd++;
+ tcp_snd_cwnd_set(tp, tcp_snd_cwnd(tp) + 1);
}
tp->snd_cwnd_cnt += acked;
@@ -420,9 +420,9 @@ void tcp_cong_avoid_ai(struct tcp_sock *tp, u32 w, u32 acked)
u32 delta = tp->snd_cwnd_cnt / w;
tp->snd_cwnd_cnt -= delta * w;
- tp->snd_cwnd += delta;
+ tcp_snd_cwnd_set(tp, tcp_snd_cwnd(tp) + delta);
}
- tp->snd_cwnd = min(tp->snd_cwnd, tp->snd_cwnd_clamp);
+ tcp_snd_cwnd_set(tp, min(tcp_snd_cwnd(tp), tp->snd_cwnd_clamp));
}
EXPORT_SYMBOL_GPL(tcp_cong_avoid_ai);
@@ -447,7 +447,7 @@ void tcp_reno_cong_avoid(struct sock *sk, u32 ack, u32 acked)
return;
}
/* In dangerous area, increase slowly. */
- tcp_cong_avoid_ai(tp, tp->snd_cwnd, acked);
+ tcp_cong_avoid_ai(tp, tcp_snd_cwnd(tp), acked);
}
EXPORT_SYMBOL_GPL(tcp_reno_cong_avoid);
@@ -456,7 +456,7 @@ u32 tcp_reno_ssthresh(struct sock *sk)
{
const struct tcp_sock *tp = tcp_sk(sk);
- return max(tp->snd_cwnd >> 1U, 2U);
+ return max(tcp_snd_cwnd(tp) >> 1U, 2U);
}
EXPORT_SYMBOL_GPL(tcp_reno_ssthresh);
@@ -464,7 +464,7 @@ u32 tcp_reno_undo_cwnd(struct sock *sk)
{
const struct tcp_sock *tp = tcp_sk(sk);
- return max(tp->snd_cwnd, tp->prior_cwnd);
+ return max(tcp_snd_cwnd(tp), tp->prior_cwnd);
}
EXPORT_SYMBOL_GPL(tcp_reno_undo_cwnd);
diff --git a/net/ipv4/tcp_cubic.c b/net/ipv4/tcp_cubic.c
index e07837e23b3f..f0a240792ff9 100644
--- a/net/ipv4/tcp_cubic.c
+++ b/net/ipv4/tcp_cubic.c
@@ -334,7 +334,7 @@ static void cubictcp_cong_avoid(struct sock *sk, u32 ack, u32 acked)
if (!acked)
return;
}
- bictcp_update(ca, tp->snd_cwnd, acked);
+ bictcp_update(ca, tcp_snd_cwnd(tp), acked);
tcp_cong_avoid_ai(tp, ca->cnt, acked);
}
@@ -346,13 +346,13 @@ static u32 cubictcp_recalc_ssthresh(struct sock *sk)
ca->epoch_start = 0; /* end of epoch */
/* Wmax and fast convergence */
- if (tp->snd_cwnd < ca->last_max_cwnd && fast_convergence)
- ca->last_max_cwnd = (tp->snd_cwnd * (BICTCP_BETA_SCALE + beta))
+ if (tcp_snd_cwnd(tp) < ca->last_max_cwnd && fast_convergence)
+ ca->last_max_cwnd = (tcp_snd_cwnd(tp) * (BICTCP_BETA_SCALE + beta))
/ (2 * BICTCP_BETA_SCALE);
else
- ca->last_max_cwnd = tp->snd_cwnd;
+ ca->last_max_cwnd = tcp_snd_cwnd(tp);
- return max((tp->snd_cwnd * beta) / BICTCP_BETA_SCALE, 2U);
+ return max((tcp_snd_cwnd(tp) * beta) / BICTCP_BETA_SCALE, 2U);
}
static void cubictcp_state(struct sock *sk, u8 new_state)
@@ -413,13 +413,13 @@ static void hystart_update(struct sock *sk, u32 delay)
ca->found = 1;
pr_debug("hystart_ack_train (%u > %u) delay_min %u (+ ack_delay %u) cwnd %u\n",
now - ca->round_start, threshold,
- ca->delay_min, hystart_ack_delay(sk), tp->snd_cwnd);
+ ca->delay_min, hystart_ack_delay(sk), tcp_snd_cwnd(tp));
NET_INC_STATS(sock_net(sk),
LINUX_MIB_TCPHYSTARTTRAINDETECT);
NET_ADD_STATS(sock_net(sk),
LINUX_MIB_TCPHYSTARTTRAINCWND,
- tp->snd_cwnd);
- tp->snd_ssthresh = tp->snd_cwnd;
+ tcp_snd_cwnd(tp));
+ tp->snd_ssthresh = tcp_snd_cwnd(tp);
}
}
}
@@ -438,8 +438,8 @@ static void hystart_update(struct sock *sk, u32 delay)
LINUX_MIB_TCPHYSTARTDELAYDETECT);
NET_ADD_STATS(sock_net(sk),
LINUX_MIB_TCPHYSTARTDELAYCWND,
- tp->snd_cwnd);
- tp->snd_ssthresh = tp->snd_cwnd;
+ tcp_snd_cwnd(tp));
+ tp->snd_ssthresh = tcp_snd_cwnd(tp);
}
}
}
@@ -469,7 +469,7 @@ static void cubictcp_acked(struct sock *sk, const struct ack_sample *sample)
/* hystart triggers when cwnd is larger than some threshold */
if (!ca->found && tcp_in_slow_start(tp) && hystart &&
- tp->snd_cwnd >= hystart_low_window)
+ tcp_snd_cwnd(tp) >= hystart_low_window)
hystart_update(sk, delay);
}
diff --git a/net/ipv4/tcp_dctcp.c b/net/ipv4/tcp_dctcp.c
index 0d7ab3cc7b61..d0bf7bb4b140 100644
--- a/net/ipv4/tcp_dctcp.c
+++ b/net/ipv4/tcp_dctcp.c
@@ -106,8 +106,8 @@ static u32 dctcp_ssthresh(struct sock *sk)
struct dctcp *ca = inet_csk_ca(sk);
struct tcp_sock *tp = tcp_sk(sk);
- ca->loss_cwnd = tp->snd_cwnd;
- return max(tp->snd_cwnd - ((tp->snd_cwnd * ca->dctcp_alpha) >> 11U), 2U);
+ ca->loss_cwnd = tcp_snd_cwnd(tp);
+ return max(tcp_snd_cwnd(tp) - ((tcp_snd_cwnd(tp) * ca->dctcp_alpha) >> 11U), 2U);
}
static void dctcp_update_alpha(struct sock *sk, u32 flags)
@@ -148,8 +148,8 @@ static void dctcp_react_to_loss(struct sock *sk)
struct dctcp *ca = inet_csk_ca(sk);
struct tcp_sock *tp = tcp_sk(sk);
- ca->loss_cwnd = tp->snd_cwnd;
- tp->snd_ssthresh = max(tp->snd_cwnd >> 1U, 2U);
+ ca->loss_cwnd = tcp_snd_cwnd(tp);
+ tp->snd_ssthresh = max(tcp_snd_cwnd(tp) >> 1U, 2U);
}
static void dctcp_state(struct sock *sk, u8 new_state)
@@ -211,8 +211,9 @@ static size_t dctcp_get_info(struct sock *sk, u32 ext, int *attr,
static u32 dctcp_cwnd_undo(struct sock *sk)
{
const struct dctcp *ca = inet_csk_ca(sk);
+ struct tcp_sock *tp = tcp_sk(sk);
- return max(tcp_sk(sk)->snd_cwnd, ca->loss_cwnd);
+ return max(tcp_snd_cwnd(tp), ca->loss_cwnd);
}
static struct tcp_congestion_ops dctcp __read_mostly = {
diff --git a/net/ipv4/tcp_highspeed.c b/net/ipv4/tcp_highspeed.c
index 349069d6cd0a..c6de5ce79ad3 100644
--- a/net/ipv4/tcp_highspeed.c
+++ b/net/ipv4/tcp_highspeed.c
@@ -127,22 +127,22 @@ static void hstcp_cong_avoid(struct sock *sk, u32 ack, u32 acked)
* snd_cwnd <=
* hstcp_aimd_vals[ca->ai].cwnd
*/
- if (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd) {
- while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd &&
+ if (tcp_snd_cwnd(tp) > hstcp_aimd_vals[ca->ai].cwnd) {
+ while (tcp_snd_cwnd(tp) > hstcp_aimd_vals[ca->ai].cwnd &&
ca->ai < HSTCP_AIMD_MAX - 1)
ca->ai++;
- } else if (ca->ai && tp->snd_cwnd <= hstcp_aimd_vals[ca->ai-1].cwnd) {
- while (ca->ai && tp->snd_cwnd <= hstcp_aimd_vals[ca->ai-1].cwnd)
+ } else if (ca->ai && tcp_snd_cwnd(tp) <= hstcp_aimd_vals[ca->ai-1].cwnd) {
+ while (ca->ai && tcp_snd_cwnd(tp) <= hstcp_aimd_vals[ca->ai-1].cwnd)
ca->ai--;
}
/* Do additive increase */
- if (tp->snd_cwnd < tp->snd_cwnd_clamp) {
+ if (tcp_snd_cwnd(tp) < tp->snd_cwnd_clamp) {
/* cwnd = cwnd + a(w) / cwnd */
tp->snd_cwnd_cnt += ca->ai + 1;
- if (tp->snd_cwnd_cnt >= tp->snd_cwnd) {
- tp->snd_cwnd_cnt -= tp->snd_cwnd;
- tp->snd_cwnd++;
+ if (tp->snd_cwnd_cnt >= tcp_snd_cwnd(tp)) {
+ tp->snd_cwnd_cnt -= tcp_snd_cwnd(tp);
+ tcp_snd_cwnd_set(tp, tcp_snd_cwnd(tp) + 1);
}
}
}
@@ -154,7 +154,7 @@ static u32 hstcp_ssthresh(struct sock *sk)
struct hstcp *ca = inet_csk_ca(sk);
/* Do multiplicative decrease */
- return max(tp->snd_cwnd - ((tp->snd_cwnd * hstcp_aimd_vals[ca->ai].md) >> 8), 2U);
+ return max(tcp_snd_cwnd(tp) - ((tcp_snd_cwnd(tp) * hstcp_aimd_vals[ca->ai].md) >> 8), 2U);
}
static struct tcp_congestion_ops tcp_highspeed __read_mostly = {
diff --git a/net/ipv4/tcp_htcp.c b/net/ipv4/tcp_htcp.c
index 55adcfcf96fe..52b1f2665dfa 100644
--- a/net/ipv4/tcp_htcp.c
+++ b/net/ipv4/tcp_htcp.c
@@ -124,7 +124,7 @@ static void measure_achieved_throughput(struct sock *sk,
ca->packetcount += sample->pkts_acked;
- if (ca->packetcount >= tp->snd_cwnd - (ca->alpha >> 7 ? : 1) &&
+ if (ca->packetcount >= tcp_snd_cwnd(tp) - (ca->alpha >> 7 ? : 1) &&
now - ca->lasttime >= ca->minRTT &&
ca->minRTT > 0) {
__u32 cur_Bi = ca->packetcount * HZ / (now - ca->lasttime);
@@ -225,7 +225,7 @@ static u32 htcp_recalc_ssthresh(struct sock *sk)
const struct htcp *ca = inet_csk_ca(sk);
htcp_param_update(sk);
- return max((tp->snd_cwnd * ca->beta) >> 7, 2U);
+ return max((tcp_snd_cwnd(tp) * ca->beta) >> 7, 2U);
}
static void htcp_cong_avoid(struct sock *sk, u32 ack, u32 acked)
@@ -242,9 +242,9 @@ static void htcp_cong_avoid(struct sock *sk, u32 ack, u32 acked)
/* In dangerous area, increase slowly.
* In theory this is tp->snd_cwnd += alpha / tp->snd_cwnd
*/
- if ((tp->snd_cwnd_cnt * ca->alpha)>>7 >= tp->snd_cwnd) {
- if (tp->snd_cwnd < tp->snd_cwnd_clamp)
- tp->snd_cwnd++;
+ if ((tp->snd_cwnd_cnt * ca->alpha)>>7 >= tcp_snd_cwnd(tp)) {
+ if (tcp_snd_cwnd(tp) < tp->snd_cwnd_clamp)
+ tcp_snd_cwnd_set(tp, tcp_snd_cwnd(tp) + 1);
tp->snd_cwnd_cnt = 0;
htcp_alpha_update(ca);
} else
diff --git a/net/ipv4/tcp_hybla.c b/net/ipv4/tcp_hybla.c
index be39327e04e6..abd7d91807e5 100644
--- a/net/ipv4/tcp_hybla.c
+++ b/net/ipv4/tcp_hybla.c
@@ -54,7 +54,7 @@ static void hybla_init(struct sock *sk)
ca->rho2_7ls = 0;
ca->snd_cwnd_cents = 0;
ca->hybla_en = true;
- tp->snd_cwnd = 2;
+ tcp_snd_cwnd_set(tp, 2);
tp->snd_cwnd_clamp = 65535;
/* 1st Rho measurement based on initial srtt */
@@ -62,7 +62,7 @@ static void hybla_init(struct sock *sk)
/* set minimum rtt as this is the 1st ever seen */
ca->minrtt_us = tp->srtt_us;
- tp->snd_cwnd = ca->rho;
+ tcp_snd_cwnd_set(tp, ca->rho);
}
static void hybla_state(struct sock *sk, u8 ca_state)
@@ -137,31 +137,31 @@ static void hybla_cong_avoid(struct sock *sk, u32 ack, u32 acked)
* as long as increment is estimated as (rho<<7)/window
* it already is <<7 and we can easily count its fractions.
*/
- increment = ca->rho2_7ls / tp->snd_cwnd;
+ increment = ca->rho2_7ls / tcp_snd_cwnd(tp);
if (increment < 128)
tp->snd_cwnd_cnt++;
}
odd = increment % 128;
- tp->snd_cwnd += increment >> 7;
+ tcp_snd_cwnd_set(tp, tcp_snd_cwnd(tp) + (increment >> 7));
ca->snd_cwnd_cents += odd;
/* check when fractions goes >=128 and increase cwnd by 1. */
while (ca->snd_cwnd_cents >= 128) {
- tp->snd_cwnd++;
+ tcp_snd_cwnd_set(tp, tcp_snd_cwnd(tp) + 1);
ca->snd_cwnd_cents -= 128;
tp->snd_cwnd_cnt = 0;
}
/* check when cwnd has not been incremented for a while */
- if (increment == 0 && odd == 0 && tp->snd_cwnd_cnt >= tp->snd_cwnd) {
- tp->snd_cwnd++;
+ if (increment == 0 && odd == 0 && tp->snd_cwnd_cnt >= tcp_snd_cwnd(tp)) {
+ tcp_snd_cwnd_set(tp, tcp_snd_cwnd(tp) + 1);
tp->snd_cwnd_cnt = 0;
}
/* clamp down slowstart cwnd to ssthresh value. */
if (is_slowstart)
- tp->snd_cwnd = min(tp->snd_cwnd, tp->snd_ssthresh);
+ tcp_snd_cwnd_set(tp, min(tcp_snd_cwnd(tp), tp->snd_ssthresh));
- tp->snd_cwnd = min_t(u32, tp->snd_cwnd, tp->snd_cwnd_clamp);
+ tcp_snd_cwnd_set(tp, min(tcp_snd_cwnd(tp), tp->snd_cwnd_clamp));
}
static struct tcp_congestion_ops tcp_hybla __read_mostly = {
diff --git a/net/ipv4/tcp_illinois.c b/net/ipv4/tcp_illinois.c
index 00e54873213e..c0c81a2c77fa 100644
--- a/net/ipv4/tcp_illinois.c
+++ b/net/ipv4/tcp_illinois.c
@@ -224,7 +224,7 @@ static void update_params(struct sock *sk)
struct tcp_sock *tp = tcp_sk(sk);
struct illinois *ca = inet_csk_ca(sk);
- if (tp->snd_cwnd < win_thresh) {
+ if (tcp_snd_cwnd(tp) < win_thresh) {
ca->alpha = ALPHA_BASE;
ca->beta = BETA_BASE;
} else if (ca->cnt_rtt > 0) {
@@ -284,9 +284,9 @@ static void tcp_illinois_cong_avoid(struct sock *sk, u32 ack, u32 acked)
* tp->snd_cwnd += alpha/tp->snd_cwnd
*/
delta = (tp->snd_cwnd_cnt * ca->alpha) >> ALPHA_SHIFT;
- if (delta >= tp->snd_cwnd) {
- tp->snd_cwnd = min(tp->snd_cwnd + delta / tp->snd_cwnd,
- (u32)tp->snd_cwnd_clamp);
+ if (delta >= tcp_snd_cwnd(tp)) {
+ tcp_snd_cwnd_set(tp, min(tcp_snd_cwnd(tp) + delta / tcp_snd_cwnd(tp),
+ (u32)tp->snd_cwnd_clamp));
tp->snd_cwnd_cnt = 0;
}
}
@@ -296,9 +296,11 @@ static u32 tcp_illinois_ssthresh(struct sock *sk)
{
struct tcp_sock *tp = tcp_sk(sk);
struct illinois *ca = inet_csk_ca(sk);
+ u32 decr;
/* Multiplicative decrease */
- return max(tp->snd_cwnd - ((tp->snd_cwnd * ca->beta) >> BETA_SHIFT), 2U);
+ decr = (tcp_snd_cwnd(tp) * ca->beta) >> BETA_SHIFT;
+ return max(tcp_snd_cwnd(tp) - decr, 2U);
}
/* Extract info for Tcp socket info provided via netlink. */
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 96c25c97ee56..edd952250465 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -414,7 +414,7 @@ static void tcp_sndbuf_expand(struct sock *sk)
per_mss = roundup_pow_of_two(per_mss) +
SKB_DATA_ALIGN(sizeof(struct sk_buff));
- nr_segs = max_t(u32, TCP_INIT_CWND, tp->snd_cwnd);
+ nr_segs = max_t(u32, TCP_INIT_CWND, tcp_snd_cwnd(tp));
nr_segs = max_t(u32, nr_segs, tp->reordering + 1);
/* Fast Recovery (RFC 5681 3.2) :
@@ -909,12 +909,12 @@ static void tcp_update_pacing_rate(struct sock *sk)
* If snd_cwnd >= (tp->snd_ssthresh / 2), we are approaching
* end of slow start and should slow down.
*/
- if (tp->snd_cwnd < tp->snd_ssthresh / 2)
+ if (tcp_snd_cwnd(tp) < tp->snd_ssthresh / 2)
rate *= sock_net(sk)->ipv4.sysctl_tcp_pacing_ss_ratio;
else
rate *= sock_net(sk)->ipv4.sysctl_tcp_pacing_ca_ratio;
- rate *= max(tp->snd_cwnd, tp->packets_out);
+ rate *= max(tcp_snd_cwnd(tp), tp->packets_out);
if (likely(tp->srtt_us))
do_div(rate, tp->srtt_us);
@@ -2147,12 +2147,12 @@ void tcp_enter_loss(struct sock *sk)
!after(tp->high_seq, tp->snd_una) ||
(icsk->icsk_ca_state == TCP_CA_Loss && !icsk->icsk_retransmits)) {
tp->prior_ssthresh = tcp_current_ssthresh(sk);
- tp->prior_cwnd = tp->snd_cwnd;
+ tp->prior_cwnd = tcp_snd_cwnd(tp);
tp->snd_ssthresh = icsk->icsk_ca_ops->ssthresh(sk);
tcp_ca_event(sk, CA_EVENT_LOSS);
tcp_init_undo(tp);
}
- tp->snd_cwnd = tcp_packets_in_flight(tp) + 1;
+ tcp_snd_cwnd_set(tp, tcp_packets_in_flight(tp) + 1);
tp->snd_cwnd_cnt = 0;
tp->snd_cwnd_stamp = tcp_jiffies32;
@@ -2458,7 +2458,7 @@ static void DBGUNDO(struct sock *sk, const char *msg)
pr_debug("Undo %s %pI4/%u c%u l%u ss%u/%u p%u\n",
msg,
&inet->inet_daddr, ntohs(inet->inet_dport),
- tp->snd_cwnd, tcp_left_out(tp),
+ tcp_snd_cwnd(tp), tcp_left_out(tp),
tp->snd_ssthresh, tp->prior_ssthresh,
tp->packets_out);
}
@@ -2467,7 +2467,7 @@ static void DBGUNDO(struct sock *sk, const char *msg)
pr_debug("Undo %s %pI6/%u c%u l%u ss%u/%u p%u\n",
msg,
&sk->sk_v6_daddr, ntohs(inet->inet_dport),
- tp->snd_cwnd, tcp_left_out(tp),
+ tcp_snd_cwnd(tp), tcp_left_out(tp),
tp->snd_ssthresh, tp->prior_ssthresh,
tp->packets_out);
}
@@ -2492,7 +2492,7 @@ static void tcp_undo_cwnd_reduction(struct sock *sk, bool unmark_loss)
if (tp->prior_ssthresh) {
const struct inet_connection_sock *icsk = inet_csk(sk);
- tp->snd_cwnd = icsk->icsk_ca_ops->undo_cwnd(sk);
+ tcp_snd_cwnd_set(tp, icsk->icsk_ca_ops->undo_cwnd(sk));
if (tp->prior_ssthresh > tp->snd_ssthresh) {
tp->snd_ssthresh = tp->prior_ssthresh;
@@ -2599,7 +2599,7 @@ static void tcp_init_cwnd_reduction(struct sock *sk)
tp->high_seq = tp->snd_nxt;
tp->tlp_high_seq = 0;
tp->snd_cwnd_cnt = 0;
- tp->prior_cwnd = tp->snd_cwnd;
+ tp->prior_cwnd = tcp_snd_cwnd(tp);
tp->prr_delivered = 0;
tp->prr_out = 0;
tp->snd_ssthresh = inet_csk(sk)->icsk_ca_ops->ssthresh(sk);
@@ -2629,7 +2629,7 @@ void tcp_cwnd_reduction(struct sock *sk, int newly_acked_sacked, int newly_lost,
}
/* Force a fast retransmit upon entering fast recovery */
sndcnt = max(sndcnt, (tp->prr_out ? 0 : 1));
- tp->snd_cwnd = tcp_packets_in_flight(tp) + sndcnt;
+ tcp_snd_cwnd_set(tp, tcp_packets_in_flight(tp) + sndcnt);
}
static inline void tcp_end_cwnd_reduction(struct sock *sk)
@@ -2642,7 +2642,7 @@ static inline void tcp_end_cwnd_reduction(struct sock *sk)
/* Reset cwnd to ssthresh in CWR or Recovery (unless it's undone) */
if (tp->snd_ssthresh < TCP_INFINITE_SSTHRESH &&
(inet_csk(sk)->icsk_ca_state == TCP_CA_CWR || tp->undo_marker)) {
- tp->snd_cwnd = tp->snd_ssthresh;
+ tcp_snd_cwnd_set(tp, tp->snd_ssthresh);
tp->snd_cwnd_stamp = tcp_jiffies32;
}
tcp_ca_event(sk, CA_EVENT_COMPLETE_CWR);
@@ -2709,9 +2709,9 @@ static void tcp_mtup_probe_success(struct sock *sk)
/* FIXME: breaks with very large cwnd */
tp->prior_ssthresh = tcp_current_ssthresh(sk);
- tp->snd_cwnd = tp->snd_cwnd *
- tcp_mss_to_mtu(sk, tp->mss_cache) /
- icsk->icsk_mtup.probe_size;
+ tcp_snd_cwnd_set(tp, tcp_snd_cwnd(tp) *
+ tcp_mss_to_mtu(sk, tp->mss_cache) /
+ icsk->icsk_mtup.probe_size);
tp->snd_cwnd_cnt = 0;
tp->snd_cwnd_stamp = tcp_jiffies32;
tp->snd_ssthresh = tcp_current_ssthresh(sk);
@@ -3034,7 +3034,7 @@ static void tcp_fastretrans_alert(struct sock *sk, const u32 prior_snd_una,
tp->snd_una == tp->mtu_probe.probe_seq_start) {
tcp_mtup_probe_failed(sk);
/* Restores the reduction we did in tcp_mtup_probe() */
- tp->snd_cwnd++;
+ tcp_snd_cwnd_set(tp, tcp_snd_cwnd(tp) + 1);
tcp_simple_retransmit(sk);
return;
}
@@ -5420,7 +5420,7 @@ static bool tcp_should_expand_sndbuf(struct sock *sk)
return false;
/* If we filled the congestion window, do not expand. */
- if (tcp_packets_in_flight(tp) >= tp->snd_cwnd)
+ if (tcp_packets_in_flight(tp) >= tcp_snd_cwnd(tp))
return false;
return true;
@@ -5991,9 +5991,9 @@ void tcp_init_transfer(struct sock *sk, int bpf_op, struct sk_buff *skb)
* retransmission has occurred.
*/
if (tp->total_retrans > 1 && tp->undo_marker)
- tp->snd_cwnd = 1;
+ tcp_snd_cwnd_set(tp, 1);
else
- tp->snd_cwnd = tcp_init_cwnd(tp, __sk_dst_get(sk));
+ tcp_snd_cwnd_set(tp, tcp_init_cwnd(tp, __sk_dst_get(sk)));
tp->snd_cwnd_stamp = tcp_jiffies32;
bpf_skops_established(sk, bpf_op, skb);
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index fec656f5a39e..79f9a6187a01 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -2665,7 +2665,7 @@ static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i)
jiffies_to_clock_t(icsk->icsk_rto),
jiffies_to_clock_t(icsk->icsk_ack.ato),
(icsk->icsk_ack.quick << 1) | inet_csk_in_pingpong_mode(sk),
- tp->snd_cwnd,
+ tcp_snd_cwnd(tp),
state == TCP_LISTEN ?
fastopenq->max_qlen :
(tcp_in_initial_slowstart(tp) ? -1 : tp->snd_ssthresh));
diff --git a/net/ipv4/tcp_lp.c b/net/ipv4/tcp_lp.c
index 82b36ec3f2f8..ae36780977d2 100644
--- a/net/ipv4/tcp_lp.c
+++ b/net/ipv4/tcp_lp.c
@@ -297,7 +297,7 @@ static void tcp_lp_pkts_acked(struct sock *sk, const struct ack_sample *sample)
lp->flag &= ~LP_WITHIN_THR;
pr_debug("TCP-LP: %05o|%5u|%5u|%15u|%15u|%15u\n", lp->flag,
- tp->snd_cwnd, lp->remote_hz, lp->owd_min, lp->owd_max,
+ tcp_snd_cwnd(tp), lp->remote_hz, lp->owd_min, lp->owd_max,
lp->sowd >> 3);
if (lp->flag & LP_WITHIN_THR)
@@ -313,12 +313,12 @@ static void tcp_lp_pkts_acked(struct sock *sk, const struct ack_sample *sample)
/* happened within inference
* drop snd_cwnd into 1 */
if (lp->flag & LP_WITHIN_INF)
- tp->snd_cwnd = 1U;
+ tcp_snd_cwnd_set(tp, 1U);
/* happened after inference
* cut snd_cwnd into half */
else
- tp->snd_cwnd = max(tp->snd_cwnd >> 1U, 1U);
+ tcp_snd_cwnd_set(tp, max(tcp_snd_cwnd(tp) >> 1U, 1U));
/* record this drop time */
lp->last_drop = now;
diff --git a/net/ipv4/tcp_metrics.c b/net/ipv4/tcp_metrics.c
index 0588b004ddac..7029b0e98edb 100644
--- a/net/ipv4/tcp_metrics.c
+++ b/net/ipv4/tcp_metrics.c
@@ -388,15 +388,15 @@ void tcp_update_metrics(struct sock *sk)
if (!net->ipv4.sysctl_tcp_no_ssthresh_metrics_save &&
!tcp_metric_locked(tm, TCP_METRIC_SSTHRESH)) {
val = tcp_metric_get(tm, TCP_METRIC_SSTHRESH);
- if (val && (tp->snd_cwnd >> 1) > val)
+ if (val && (tcp_snd_cwnd(tp) >> 1) > val)
tcp_metric_set(tm, TCP_METRIC_SSTHRESH,
- tp->snd_cwnd >> 1);
+ tcp_snd_cwnd(tp) >> 1);
}
if (!tcp_metric_locked(tm, TCP_METRIC_CWND)) {
val = tcp_metric_get(tm, TCP_METRIC_CWND);
- if (tp->snd_cwnd > val)
+ if (tcp_snd_cwnd(tp) > val)
tcp_metric_set(tm, TCP_METRIC_CWND,
- tp->snd_cwnd);
+ tcp_snd_cwnd(tp));
}
} else if (!tcp_in_slow_start(tp) &&
icsk->icsk_ca_state == TCP_CA_Open) {
@@ -404,10 +404,10 @@ void tcp_update_metrics(struct sock *sk)
if (!net->ipv4.sysctl_tcp_no_ssthresh_metrics_save &&
!tcp_metric_locked(tm, TCP_METRIC_SSTHRESH))
tcp_metric_set(tm, TCP_METRIC_SSTHRESH,
- max(tp->snd_cwnd >> 1, tp->snd_ssthresh));
+ max(tcp_snd_cwnd(tp) >> 1, tp->snd_ssthresh));
if (!tcp_metric_locked(tm, TCP_METRIC_CWND)) {
val = tcp_metric_get(tm, TCP_METRIC_CWND);
- tcp_metric_set(tm, TCP_METRIC_CWND, (val + tp->snd_cwnd) >> 1);
+ tcp_metric_set(tm, TCP_METRIC_CWND, (val + tcp_snd_cwnd(tp)) >> 1);
}
} else {
/* Else slow start did not finish, cwnd is non-sense,
diff --git a/net/ipv4/tcp_nv.c b/net/ipv4/tcp_nv.c
index ab552356bdba..a60662f4bdf9 100644
--- a/net/ipv4/tcp_nv.c
+++ b/net/ipv4/tcp_nv.c
@@ -197,10 +197,10 @@ static void tcpnv_cong_avoid(struct sock *sk, u32 ack, u32 acked)
}
if (ca->cwnd_growth_factor < 0) {
- cnt = tp->snd_cwnd << -ca->cwnd_growth_factor;
+ cnt = tcp_snd_cwnd(tp) << -ca->cwnd_growth_factor;
tcp_cong_avoid_ai(tp, cnt, acked);
} else {
- cnt = max(4U, tp->snd_cwnd >> ca->cwnd_growth_factor);
+ cnt = max(4U, tcp_snd_cwnd(tp) >> ca->cwnd_growth_factor);
tcp_cong_avoid_ai(tp, cnt, acked);
}
}
@@ -209,7 +209,7 @@ static u32 tcpnv_recalc_ssthresh(struct sock *sk)
{
const struct tcp_sock *tp = tcp_sk(sk);
- return max((tp->snd_cwnd * nv_loss_dec_factor) >> 10, 2U);
+ return max((tcp_snd_cwnd(tp) * nv_loss_dec_factor) >> 10, 2U);
}
static void tcpnv_state(struct sock *sk, u8 new_state)
@@ -257,7 +257,7 @@ static void tcpnv_acked(struct sock *sk, const struct ack_sample *sample)
return;
/* Stop cwnd growth if we were in catch up mode */
- if (ca->nv_catchup && tp->snd_cwnd >= nv_min_cwnd) {
+ if (ca->nv_catchup && tcp_snd_cwnd(tp) >= nv_min_cwnd) {
ca->nv_catchup = 0;
ca->nv_allow_cwnd_growth = 0;
}
@@ -371,7 +371,7 @@ static void tcpnv_acked(struct sock *sk, const struct ack_sample *sample)
* if cwnd < max_win, grow cwnd
* else leave the same
*/
- if (tp->snd_cwnd > max_win) {
+ if (tcp_snd_cwnd(tp) > max_win) {
/* there is congestion, check that it is ok
* to make a CA decision
* 1. We should have at least nv_dec_eval_min_calls
@@ -398,20 +398,20 @@ static void tcpnv_acked(struct sock *sk, const struct ack_sample *sample)
ca->nv_allow_cwnd_growth = 0;
tp->snd_ssthresh =
(nv_ssthresh_factor * max_win) >> 3;
- if (tp->snd_cwnd - max_win > 2) {
+ if (tcp_snd_cwnd(tp) - max_win > 2) {
/* gap > 2, we do exponential cwnd decrease */
int dec;
- dec = max(2U, ((tp->snd_cwnd - max_win) *
+ dec = max(2U, ((tcp_snd_cwnd(tp) - max_win) *
nv_cong_dec_mult) >> 7);
- tp->snd_cwnd -= dec;
+ tcp_snd_cwnd_set(tp, tcp_snd_cwnd(tp) - dec);
} else if (nv_cong_dec_mult > 0) {
- tp->snd_cwnd = max_win;
+ tcp_snd_cwnd_set(tp, max_win);
}
if (ca->cwnd_growth_factor > 0)
ca->cwnd_growth_factor = 0;
ca->nv_no_cong_cnt = 0;
- } else if (tp->snd_cwnd <= max_win - nv_pad_buffer) {
+ } else if (tcp_snd_cwnd(tp) <= max_win - nv_pad_buffer) {
/* There is no congestion, grow cwnd if allowed*/
if (ca->nv_eval_call_cnt < nv_inc_eval_min_calls)
return;
@@ -444,8 +444,8 @@ static void tcpnv_acked(struct sock *sk, const struct ack_sample *sample)
* (it wasn't before, if it is now is because nv
* decreased it).
*/
- if (tp->snd_cwnd < nv_min_cwnd)
- tp->snd_cwnd = nv_min_cwnd;
+ if (tcp_snd_cwnd(tp) < nv_min_cwnd)
+ tcp_snd_cwnd_set(tp, nv_min_cwnd);
}
}
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 0b5eab685154..84651fc3dde0 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -143,7 +143,7 @@ void tcp_cwnd_restart(struct sock *sk, s32 delta)
{
struct tcp_sock *tp = tcp_sk(sk);
u32 restart_cwnd = tcp_init_cwnd(tp, __sk_dst_get(sk));
- u32 cwnd = tp->snd_cwnd;
+ u32 cwnd = tcp_snd_cwnd(tp);
tcp_ca_event(sk, CA_EVENT_CWND_RESTART);
@@ -152,7 +152,7 @@ void tcp_cwnd_restart(struct sock *sk, s32 delta)
while ((delta -= inet_csk(sk)->icsk_rto) > 0 && cwnd > restart_cwnd)
cwnd >>= 1;
- tp->snd_cwnd = max(cwnd, restart_cwnd);
+ tcp_snd_cwnd_set(tp, max(cwnd, restart_cwnd));
tp->snd_cwnd_stamp = tcp_jiffies32;
tp->snd_cwnd_used = 0;
}
@@ -1014,7 +1014,7 @@ static void tcp_tsq_write(struct sock *sk)
struct tcp_sock *tp = tcp_sk(sk);
if (tp->lost_out > tp->retrans_out &&
- tp->snd_cwnd > tcp_packets_in_flight(tp)) {
+ tcp_snd_cwnd(tp) > tcp_packets_in_flight(tp)) {
tcp_mstamp_refresh(tp);
tcp_xmit_retransmit_queue(sk);
}
@@ -1861,9 +1861,9 @@ static void tcp_cwnd_application_limited(struct sock *sk)
/* Limited by application or receiver window. */
u32 init_win = tcp_init_cwnd(tp, __sk_dst_get(sk));
u32 win_used = max(tp->snd_cwnd_used, init_win);
- if (win_used < tp->snd_cwnd) {
+ if (win_used < tcp_snd_cwnd(tp)) {
tp->snd_ssthresh = tcp_current_ssthresh(sk);
- tp->snd_cwnd = (tp->snd_cwnd + win_used) >> 1;
+ tcp_snd_cwnd_set(tp, (tcp_snd_cwnd(tp) + win_used) >> 1);
}
tp->snd_cwnd_used = 0;
}
@@ -2035,7 +2035,7 @@ static inline unsigned int tcp_cwnd_test(const struct tcp_sock *tp,
return 1;
in_flight = tcp_packets_in_flight(tp);
- cwnd = tp->snd_cwnd;
+ cwnd = tcp_snd_cwnd(tp);
if (in_flight >= cwnd)
return 0;
@@ -2188,12 +2188,12 @@ static bool tcp_tso_should_defer(struct sock *sk, struct sk_buff *skb,
in_flight = tcp_packets_in_flight(tp);
BUG_ON(tcp_skb_pcount(skb) <= 1);
- BUG_ON(tp->snd_cwnd <= in_flight);
+ BUG_ON(tcp_snd_cwnd(tp) <= in_flight);
send_win = tcp_wnd_end(tp) - TCP_SKB_CB(skb)->seq;
/* From in_flight test above, we know that cwnd > in_flight. */
- cong_win = (tp->snd_cwnd - in_flight) * tp->mss_cache;
+ cong_win = (tcp_snd_cwnd(tp) - in_flight) * tp->mss_cache;
limit = min(send_win, cong_win);
@@ -2207,7 +2207,7 @@ static bool tcp_tso_should_defer(struct sock *sk, struct sk_buff *skb,
win_divisor = READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_tso_win_divisor);
if (win_divisor) {
- u32 chunk = min(tp->snd_wnd, tp->snd_cwnd * tp->mss_cache);
+ u32 chunk = min(tp->snd_wnd, tcp_snd_cwnd(tp) * tp->mss_cache);
/* If at least some fraction of a window is available,
* just use it.
@@ -2337,7 +2337,7 @@ static int tcp_mtu_probe(struct sock *sk)
if (likely(!icsk->icsk_mtup.enabled ||
icsk->icsk_mtup.probe_size ||
inet_csk(sk)->icsk_ca_state != TCP_CA_Open ||
- tp->snd_cwnd < 11 ||
+ tcp_snd_cwnd(tp) < 11 ||
tp->rx_opt.num_sacks || tp->rx_opt.dsack))
return -1;
@@ -2373,7 +2373,7 @@ static int tcp_mtu_probe(struct sock *sk)
return 0;
/* Do we need to wait to drain cwnd? With none in flight, don't stall */
- if (tcp_packets_in_flight(tp) + 2 > tp->snd_cwnd) {
+ if (tcp_packets_in_flight(tp) + 2 > tcp_snd_cwnd(tp)) {
if (!tcp_packets_in_flight(tp))
return -1;
else
@@ -2442,7 +2442,7 @@ static int tcp_mtu_probe(struct sock *sk)
if (!tcp_transmit_skb(sk, nskb, 1, GFP_ATOMIC)) {
/* Decrement cwnd here because we are sending
* effectively two packets. */
- tp->snd_cwnd--;
+ tcp_snd_cwnd_set(tp, tcp_snd_cwnd(tp) - 1);
tcp_event_new_data_sent(sk, nskb);
icsk->icsk_mtup.probe_size = tcp_mss_to_mtu(sk, nskb->len);
@@ -2699,7 +2699,7 @@ static bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle,
else
tcp_chrono_stop(sk, TCP_CHRONO_RWND_LIMITED);
- is_cwnd_limited |= (tcp_packets_in_flight(tp) >= tp->snd_cwnd);
+ is_cwnd_limited |= (tcp_packets_in_flight(tp) >= tcp_snd_cwnd(tp));
if (likely(sent_pkts || is_cwnd_limited))
tcp_cwnd_validate(sk, is_cwnd_limited);
@@ -2809,7 +2809,7 @@ void tcp_send_loss_probe(struct sock *sk)
if (unlikely(!skb)) {
WARN_ONCE(tp->packets_out,
"invalid inflight: %u state %u cwnd %u mss %d\n",
- tp->packets_out, sk->sk_state, tp->snd_cwnd, mss);
+ tp->packets_out, sk->sk_state, tcp_snd_cwnd(tp), mss);
inet_csk(sk)->icsk_pending = 0;
return;
}
@@ -3293,7 +3293,7 @@ void tcp_xmit_retransmit_queue(struct sock *sk)
if (!hole)
tp->retransmit_skb_hint = skb;
- segs = tp->snd_cwnd - tcp_packets_in_flight(tp);
+ segs = tcp_snd_cwnd(tp) - tcp_packets_in_flight(tp);
if (segs <= 0)
break;
sacked = TCP_SKB_CB(skb)->sacked;
diff --git a/net/ipv4/tcp_rate.c b/net/ipv4/tcp_rate.c
index 9a8e014d9b5b..a8f6d9d06f2e 100644
--- a/net/ipv4/tcp_rate.c
+++ b/net/ipv4/tcp_rate.c
@@ -200,7 +200,7 @@ void tcp_rate_check_app_limited(struct sock *sk)
/* Nothing in sending host's qdisc queues or NIC tx queue. */
sk_wmem_alloc_get(sk) < SKB_TRUESIZE(1) &&
/* We are not limited by CWND. */
- tcp_packets_in_flight(tp) < tp->snd_cwnd &&
+ tcp_packets_in_flight(tp) < tcp_snd_cwnd(tp) &&
/* All lost packets have been retransmitted. */
tp->lost_out <= tp->retrans_out)
tp->app_limited =
diff --git a/net/ipv4/tcp_scalable.c b/net/ipv4/tcp_scalable.c
index 5842081bc8a2..862b96248a92 100644
--- a/net/ipv4/tcp_scalable.c
+++ b/net/ipv4/tcp_scalable.c
@@ -27,7 +27,7 @@ static void tcp_scalable_cong_avoid(struct sock *sk, u32 ack, u32 acked)
if (!acked)
return;
}
- tcp_cong_avoid_ai(tp, min(tp->snd_cwnd, TCP_SCALABLE_AI_CNT),
+ tcp_cong_avoid_ai(tp, min(tcp_snd_cwnd(tp), TCP_SCALABLE_AI_CNT),
acked);
}
@@ -35,7 +35,7 @@ static u32 tcp_scalable_ssthresh(struct sock *sk)
{
const struct tcp_sock *tp = tcp_sk(sk);
- return max(tp->snd_cwnd - (tp->snd_cwnd>>TCP_SCALABLE_MD_SCALE), 2U);
+ return max(tcp_snd_cwnd(tp) - (tcp_snd_cwnd(tp)>>TCP_SCALABLE_MD_SCALE), 2U);
}
static struct tcp_congestion_ops tcp_scalable __read_mostly = {
diff --git a/net/ipv4/tcp_vegas.c b/net/ipv4/tcp_vegas.c
index c8003c8aad2c..786848ad37ea 100644
--- a/net/ipv4/tcp_vegas.c
+++ b/net/ipv4/tcp_vegas.c
@@ -159,7 +159,7 @@ EXPORT_SYMBOL_GPL(tcp_vegas_cwnd_event);
static inline u32 tcp_vegas_ssthresh(struct tcp_sock *tp)
{
- return min(tp->snd_ssthresh, tp->snd_cwnd);
+ return min(tp->snd_ssthresh, tcp_snd_cwnd(tp));
}
static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 acked)
@@ -217,14 +217,14 @@ static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 acked)
* This is:
* (actual rate in segments) * baseRTT
*/
- target_cwnd = (u64)tp->snd_cwnd * vegas->baseRTT;
+ target_cwnd = (u64)tcp_snd_cwnd(tp) * vegas->baseRTT;
do_div(target_cwnd, rtt);
/* Calculate the difference between the window we had,
* and the window we would like to have. This quantity
* is the "Diff" from the Arizona Vegas papers.
*/
- diff = tp->snd_cwnd * (rtt-vegas->baseRTT) / vegas->baseRTT;
+ diff = tcp_snd_cwnd(tp) * (rtt-vegas->baseRTT) / vegas->baseRTT;
if (diff > gamma && tcp_in_slow_start(tp)) {
/* Going too fast. Time to slow down
@@ -238,7 +238,8 @@ static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 acked)
* truncation robs us of full link
* utilization.
*/
- tp->snd_cwnd = min(tp->snd_cwnd, (u32)target_cwnd+1);
+ tcp_snd_cwnd_set(tp, min(tcp_snd_cwnd(tp),
+ (u32)target_cwnd + 1));
tp->snd_ssthresh = tcp_vegas_ssthresh(tp);
} else if (tcp_in_slow_start(tp)) {
@@ -254,14 +255,14 @@ static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 acked)
/* The old window was too fast, so
* we slow down.
*/
- tp->snd_cwnd--;
+ tcp_snd_cwnd_set(tp, tcp_snd_cwnd(tp) - 1);
tp->snd_ssthresh
= tcp_vegas_ssthresh(tp);
} else if (diff < alpha) {
/* We don't have enough extra packets
* in the network, so speed up.
*/
- tp->snd_cwnd++;
+ tcp_snd_cwnd_set(tp, tcp_snd_cwnd(tp) + 1);
} else {
/* Sending just as fast as we
* should be.
@@ -269,10 +270,10 @@ static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 acked)
}
}
- if (tp->snd_cwnd < 2)
- tp->snd_cwnd = 2;
- else if (tp->snd_cwnd > tp->snd_cwnd_clamp)
- tp->snd_cwnd = tp->snd_cwnd_clamp;
+ if (tcp_snd_cwnd(tp) < 2)
+ tcp_snd_cwnd_set(tp, 2);
+ else if (tcp_snd_cwnd(tp) > tp->snd_cwnd_clamp)
+ tcp_snd_cwnd_set(tp, tp->snd_cwnd_clamp);
tp->snd_ssthresh = tcp_current_ssthresh(sk);
}
diff --git a/net/ipv4/tcp_veno.c b/net/ipv4/tcp_veno.c
index cd50a61c9976..366ff6f214b2 100644
--- a/net/ipv4/tcp_veno.c
+++ b/net/ipv4/tcp_veno.c
@@ -146,11 +146,11 @@ static void tcp_veno_cong_avoid(struct sock *sk, u32 ack, u32 acked)
rtt = veno->minrtt;
- target_cwnd = (u64)tp->snd_cwnd * veno->basertt;
+ target_cwnd = (u64)tcp_snd_cwnd(tp) * veno->basertt;
target_cwnd <<= V_PARAM_SHIFT;
do_div(target_cwnd, rtt);
- veno->diff = (tp->snd_cwnd << V_PARAM_SHIFT) - target_cwnd;
+ veno->diff = (tcp_snd_cwnd(tp) << V_PARAM_SHIFT) - target_cwnd;
if (tcp_in_slow_start(tp)) {
/* Slow start. */
@@ -164,15 +164,15 @@ static void tcp_veno_cong_avoid(struct sock *sk, u32 ack, u32 acked)
/* In the "non-congestive state", increase cwnd
* every rtt.
*/
- tcp_cong_avoid_ai(tp, tp->snd_cwnd, acked);
+ tcp_cong_avoid_ai(tp, tcp_snd_cwnd(tp), acked);
} else {
/* In the "congestive state", increase cwnd
* every other rtt.
*/
- if (tp->snd_cwnd_cnt >= tp->snd_cwnd) {
+ if (tp->snd_cwnd_cnt >= tcp_snd_cwnd(tp)) {
if (veno->inc &&
- tp->snd_cwnd < tp->snd_cwnd_clamp) {
- tp->snd_cwnd++;
+ tcp_snd_cwnd(tp) < tp->snd_cwnd_clamp) {
+ tcp_snd_cwnd_set(tp, tcp_snd_cwnd(tp) + 1);
veno->inc = 0;
} else
veno->inc = 1;
@@ -181,10 +181,10 @@ static void tcp_veno_cong_avoid(struct sock *sk, u32 ack, u32 acked)
tp->snd_cwnd_cnt += acked;
}
done:
- if (tp->snd_cwnd < 2)
- tp->snd_cwnd = 2;
- else if (tp->snd_cwnd > tp->snd_cwnd_clamp)
- tp->snd_cwnd = tp->snd_cwnd_clamp;
+ if (tcp_snd_cwnd(tp) < 2)
+ tcp_snd_cwnd_set(tp, 2);
+ else if (tcp_snd_cwnd(tp) > tp->snd_cwnd_clamp)
+ tcp_snd_cwnd_set(tp, tp->snd_cwnd_clamp);
}
/* Wipe the slate clean for the next rtt. */
/* veno->cntrtt = 0; */
@@ -199,10 +199,10 @@ static u32 tcp_veno_ssthresh(struct sock *sk)
if (veno->diff < beta)
/* in "non-congestive state", cut cwnd by 1/5 */
- return max(tp->snd_cwnd * 4 / 5, 2U);
+ return max(tcp_snd_cwnd(tp) * 4 / 5, 2U);
else
/* in "congestive state", cut cwnd by 1/2 */
- return max(tp->snd_cwnd >> 1U, 2U);
+ return max(tcp_snd_cwnd(tp) >> 1U, 2U);
}
static struct tcp_congestion_ops tcp_veno __read_mostly = {
diff --git a/net/ipv4/tcp_westwood.c b/net/ipv4/tcp_westwood.c
index b2e05c4cea00..c6e97141eef2 100644
--- a/net/ipv4/tcp_westwood.c
+++ b/net/ipv4/tcp_westwood.c
@@ -244,7 +244,8 @@ static void tcp_westwood_event(struct sock *sk, enum tcp_ca_event event)
switch (event) {
case CA_EVENT_COMPLETE_CWR:
- tp->snd_cwnd = tp->snd_ssthresh = tcp_westwood_bw_rttmin(sk);
+ tp->snd_ssthresh = tcp_westwood_bw_rttmin(sk);
+ tcp_snd_cwnd_set(tp, tp->snd_ssthresh);
break;
case CA_EVENT_LOSS:
tp->snd_ssthresh = tcp_westwood_bw_rttmin(sk);
diff --git a/net/ipv4/tcp_yeah.c b/net/ipv4/tcp_yeah.c
index 07c4c93b9fdb..18b07ff5d20e 100644
--- a/net/ipv4/tcp_yeah.c
+++ b/net/ipv4/tcp_yeah.c
@@ -71,11 +71,11 @@ static void tcp_yeah_cong_avoid(struct sock *sk, u32 ack, u32 acked)
if (!yeah->doing_reno_now) {
/* Scalable */
- tcp_cong_avoid_ai(tp, min(tp->snd_cwnd, TCP_SCALABLE_AI_CNT),
+ tcp_cong_avoid_ai(tp, min(tcp_snd_cwnd(tp), TCP_SCALABLE_AI_CNT),
acked);
} else {
/* Reno */
- tcp_cong_avoid_ai(tp, tp->snd_cwnd, acked);
+ tcp_cong_avoid_ai(tp, tcp_snd_cwnd(tp), acked);
}
/* The key players are v_vegas.beg_snd_una and v_beg_snd_nxt.
@@ -130,7 +130,7 @@ static void tcp_yeah_cong_avoid(struct sock *sk, u32 ack, u32 acked)
/* Compute excess number of packets above bandwidth
* Avoid doing full 64 bit divide.
*/
- bw = tp->snd_cwnd;
+ bw = tcp_snd_cwnd(tp);
bw *= rtt - yeah->vegas.baseRTT;
do_div(bw, rtt);
queue = bw;
@@ -138,20 +138,20 @@ static void tcp_yeah_cong_avoid(struct sock *sk, u32 ack, u32 acked)
if (queue > TCP_YEAH_ALPHA ||
rtt - yeah->vegas.baseRTT > (yeah->vegas.baseRTT / TCP_YEAH_PHY)) {
if (queue > TCP_YEAH_ALPHA &&
- tp->snd_cwnd > yeah->reno_count) {
+ tcp_snd_cwnd(tp) > yeah->reno_count) {
u32 reduction = min(queue / TCP_YEAH_GAMMA ,
- tp->snd_cwnd >> TCP_YEAH_EPSILON);
+ tcp_snd_cwnd(tp) >> TCP_YEAH_EPSILON);
- tp->snd_cwnd -= reduction;
+ tcp_snd_cwnd_set(tp, tcp_snd_cwnd(tp) - reduction);
- tp->snd_cwnd = max(tp->snd_cwnd,
- yeah->reno_count);
+ tcp_snd_cwnd_set(tp, max(tcp_snd_cwnd(tp),
+ yeah->reno_count));
- tp->snd_ssthresh = tp->snd_cwnd;
+ tp->snd_ssthresh = tcp_snd_cwnd(tp);
}
if (yeah->reno_count <= 2)
- yeah->reno_count = max(tp->snd_cwnd>>1, 2U);
+ yeah->reno_count = max(tcp_snd_cwnd(tp)>>1, 2U);
else
yeah->reno_count++;
@@ -176,7 +176,7 @@ static void tcp_yeah_cong_avoid(struct sock *sk, u32 ack, u32 acked)
*/
yeah->vegas.beg_snd_una = yeah->vegas.beg_snd_nxt;
yeah->vegas.beg_snd_nxt = tp->snd_nxt;
- yeah->vegas.beg_snd_cwnd = tp->snd_cwnd;
+ yeah->vegas.beg_snd_cwnd = tcp_snd_cwnd(tp);
/* Wipe the slate clean for the next RTT. */
yeah->vegas.cntRTT = 0;
@@ -193,16 +193,16 @@ static u32 tcp_yeah_ssthresh(struct sock *sk)
if (yeah->doing_reno_now < TCP_YEAH_RHO) {
reduction = yeah->lastQ;
- reduction = min(reduction, max(tp->snd_cwnd>>1, 2U));
+ reduction = min(reduction, max(tcp_snd_cwnd(tp)>>1, 2U));
- reduction = max(reduction, tp->snd_cwnd >> TCP_YEAH_DELTA);
+ reduction = max(reduction, tcp_snd_cwnd(tp) >> TCP_YEAH_DELTA);
} else
- reduction = max(tp->snd_cwnd>>1, 2U);
+ reduction = max(tcp_snd_cwnd(tp)>>1, 2U);
yeah->fast_count = 0;
yeah->reno_count = max(yeah->reno_count>>1, 2U);
- return max_t(int, tp->snd_cwnd - reduction, 2);
+ return max_t(int, tcp_snd_cwnd(tp) - reduction, 2);
}
static struct tcp_congestion_ops tcp_yeah __read_mostly = {
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 075ee8a2df3b..29a4fc92580e 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -2074,7 +2074,7 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i)
jiffies_to_clock_t(icsk->icsk_rto),
jiffies_to_clock_t(icsk->icsk_ack.ato),
(icsk->icsk_ack.quick << 1) | inet_csk_in_pingpong_mode(sp),
- tp->snd_cwnd,
+ tcp_snd_cwnd(tp),
state == TCP_LISTEN ?
fastopenq->max_qlen :
(tcp_in_initial_slowstart(tp) ? -1 : tp->snd_ssthresh)
--
2.35.1
next prev parent reply other threads:[~2022-06-13 14:21 UTC|newest]
Thread overview: 313+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-13 10:08 [PATCH 5.17 000/298] 5.17.15-rc1 review Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 001/298] pcmcia: db1xxx_ss: restrict to MIPS_DB1XXX boards Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 002/298] staging: greybus: codecs: fix type confusion of list iterator variable Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 003/298] iio: adc: ad7124: Remove shift from scan_type Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 004/298] lkdtm/bugs: Check for the NULL pointer after calling kmalloc Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 005/298] lkdtm/bugs: Dont expect thread termination without CONFIG_UBSAN_TRAP Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 006/298] tty: goldfish: Use tty_port_destroy() to destroy port Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 007/298] tty: serial: owl: Fix missing clk_disable_unprepare() in owl_uart_probe Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 008/298] tty: n_tty: Restore EOF push handling behavior Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 009/298] serial: 8250_aspeed_vuart: Fix potential NULL dereference in aspeed_vuart_probe Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 010/298] tty: serial: fsl_lpuart: fix potential bug when using both of_alias_get_id and ida_simple_get Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 011/298] remoteproc: imx_rproc: Ignore create mem entry for resource table Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 012/298] phy: rockchip-inno-usb2: Fix muxed interrupt support Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 013/298] usb: usbip: fix a refcount leak in stub_probe() Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 014/298] usb: usbip: add missing device lock on tweak configuration cmd Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 015/298] USB: storage: karma: fix rio_karma_init return Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 016/298] usb: musb: Fix missing of_node_put() in omap2430_probe Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 017/298] staging: fieldbus: Fix the error handling path in anybuss_host_common_probe() Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 018/298] pwm: lp3943: Fix duty calculation in case period was clamped Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 019/298] pwm: raspberrypi-poe: Fix endianness in firmware struct Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 020/298] rpmsg: qcom_smd: Fix irq_of_parse_and_map() return value Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 021/298] usb: dwc3: gadget: Replace list_for_each_entry_safe() if using giveback Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 022/298] usb: dwc3: pci: Fix pm_runtime_get_sync() error checking Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 023/298] scripts/get_abi: Fix wrong script file name in the help message Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 024/298] misc: fastrpc: fix an incorrect NULL check on list iterator Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 025/298] firmware: stratix10-svc: fix a missing " Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 026/298] usb: typec: mux: Check dev_set_name() return value Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 027/298] rpmsg: virtio: Fix possible double free in rpmsg_probe() Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 028/298] rpmsg: virtio: Fix possible double free in rpmsg_virtio_add_ctrl_dev() Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 029/298] rpmsg: virtio: Fix the unregistration of the device rpmsg_ctrl Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 030/298] iio: adc: stmpe-adc: Fix wait_for_completion_timeout return value check Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 031/298] iio: proximity: vl53l0x: Fix return value check of wait_for_completion_timeout Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 032/298] iio: adc: sc27xx: fix read big scale voltage not right Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 033/298] iio: adc: sc27xx: Fine tune the scale calibration values Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 034/298] rpmsg: qcom_smd: Fix returning 0 if irq_of_parse_and_map() fails Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 035/298] misc/pvpanic: Convert regular spinlock into trylock on panic path Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 036/298] phy: qcom-qmp: fix pipe-clock imbalance on power-on failure Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 037/298] power: supply: axp288_fuel_gauge: Drop BIOS version check from "T3 MRD" DMI quirk Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 038/298] power: supply: ab8500_fg: Allocate wq in probe Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 039/298] serial: sifive: Report actual baud base rather than fixed 115200 Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 040/298] export: fix string handling of namespace in EXPORT_SYMBOL_NS Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 041/298] watchdog: rzg2l_wdt: Fix 32bit overflow issue Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 042/298] watchdog: rzg2l_wdt: Fix Runtime PM usage Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 043/298] watchdog: rzg2l_wdt: Fix BUG: Invalid wait context Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 044/298] watchdog: rzg2l_wdt: Fix reset control imbalance Greg Kroah-Hartman
2022-06-13 10:08 ` [PATCH 5.17 045/298] soundwire: intel: prevent pm_runtime resume prior to system suspend Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 046/298] coresight: cpu-debug: Replace mutex with mutex_trylock on panic notifier Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 047/298] ksmbd: fix reference count leak in smb_check_perm_dacl() Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 048/298] extcon: ptn5150: Add queue work sync before driver release Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 049/298] dt-bindings: remoteproc: mediatek: Make l1tcm reg exclusive to mt819x Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 050/298] soc: rockchip: Fix refcount leak in rockchip_grf_init Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 051/298] clocksource/drivers/riscv: Events are stopped during CPU suspend Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 052/298] ARM: dts: aspeed: ast2600-evb: Enable RX delay for MAC0/MAC1 Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 053/298] rtc: mt6397: check return value after calling platform_get_resource() Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 054/298] rtc: ftrtc010: Fix error handling in ftrtc010_rtc_probe Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 055/298] staging: r8188eu: add check for kzalloc Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 056/298] serial: meson: acquire port->lock in startup() Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 057/298] serial: 8250_fintek: Check SER_RS485_RTS_* only with RS485 Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 058/298] serial: cpm_uart: Fix build error without CONFIG_SERIAL_CPM_CONSOLE Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 059/298] serial: uartlite: Fix BRKINT clearing Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 060/298] serial: digicolor-usart: Dont allow CS5-6 Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 061/298] serial: rda-uart: " Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 062/298] serial: txx9: " Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 063/298] serial: sh-sci: " Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 064/298] serial: sifive: Sanitize CSIZE and c_iflag Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 065/298] serial: st-asc: Sanitize CSIZE and correct PARENB for CS7 Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 066/298] serial: stm32-usart: Correct CSIZE, bits, and parity Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 067/298] firmware: dmi-sysfs: Fix memory leak in dmi_sysfs_register_handle Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 068/298] bus: ti-sysc: Fix warnings for unbind for serial Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 069/298] driver: base: fix UAF when driver_attach failed Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 070/298] driver core: fix deadlock in __device_attach Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 071/298] watchdog: rti-wdt: Fix pm_runtime_get_sync() error checking Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 072/298] watchdog: ts4800_wdt: Fix refcount leak in ts4800_wdt_probe Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 073/298] blk-mq: dont touch ->tagset in blk_mq_get_sq_hctx Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 074/298] ASoC: fsl_sai: Fix FSL_SAI_xDR/xFR definition Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 075/298] clocksource/drivers/oxnas-rps: Fix irq_of_parse_and_map() return value Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 076/298] s390/crypto: fix scatterwalk_unmap() callers in AES-GCM Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 077/298] amt: fix return value of amt_update_handler() Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 078/298] amt: fix possible memory leak in amt_rcv() Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 079/298] net/smc: set ini->smcrv2.ib_dev_v2 to NULL if SMC-Rv2 is unavailable Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 080/298] spi: fsi: Fix spurious timeout Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 081/298] drm/amdgpu: Off by one in dm_dmub_outbox1_low_irq() Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 082/298] net: lan966x: check devm_of_phy_get() for -EDEFER_PROBE Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 083/298] net: sched: fixed barrier to prevent skbuff sticking in qdisc backlog Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 084/298] net: ethernet: mtk_eth_soc: out of bounds read in mtk_hwlro_get_fdir_entry() Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 085/298] net: ethernet: ti: am65-cpsw-nuss: Fix some refcount leaks Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 086/298] net: dsa: mv88e6xxx: Fix refcount leak in mv88e6xxx_mdios_register Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 087/298] modpost: fix removing numeric suffixes Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 088/298] ep93xx: clock: Do not return the address of the freed memory Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 089/298] jffs2: fix memory leak in jffs2_do_fill_super Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 090/298] ubi: fastmap: Fix high cpu usage of ubi_bgt by making sure wl_pool not empty Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 091/298] ubi: ubi_create_volume: Fix use-after-free when volume creation failed Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 092/298] selftests/bpf: fix selftest after random: Urandom_read tracepoint removal Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 093/298] selftests/bpf: fix stacktrace_build_id with missing kprobe/urandom_read Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 094/298] bpf: Fix probe read error in ___bpf_prog_run() Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 095/298] block: take destination bvec offsets into account in bio_copy_data_iter Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 096/298] nbd: dont clear NBD_CMD_INFLIGHT flag if request is not completed Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 097/298] riscv: read-only pages should not be writable Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 098/298] net/smc: fixes for converting from "struct smc_cdc_tx_pend **" to "struct smc_wr_tx_pend_priv *" Greg Kroah-Hartman
2022-06-13 10:09 ` Greg Kroah-Hartman [this message]
2022-06-13 10:09 ` [PATCH 5.17 100/298] nfp: only report pause frame configuration for physical device Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 101/298] block: use bio_queue_enter instead of blk_queue_enter in bio_poll Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 102/298] sfc: fix considering that all channels have TX queues Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 103/298] sfc: fix wrong tx channel offset with efx_separate_tx_channels Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 104/298] block: make bioset_exit() fully resilient against being called twice Greg Kroah-Hartman
2022-06-13 10:09 ` [PATCH 5.17 105/298] blk-mq: do not update io_ticks with passthrough requests Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 106/298] vdpa: Fix error logic in vdpa_nl_cmd_dev_get_doit Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 107/298] virtio: pci: Fix an error handling path in vp_modern_probe() Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 108/298] net/mlx5: Dont use already freed action pointer Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 109/298] net/mlx5e: TC NIC mode, fix tc chains miss table Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 110/298] net/mlx5: CT: Fix header-rewrite re-use for tupels Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 111/298] net/mlx5e: Disable softirq in mlx5e_activate_rq to avoid race condition Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 112/298] net/mlx5: correct ECE offset in query qp output Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 113/298] net/mlx5e: Update netdev features after changing XDP state Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 114/298] net: sched: add barrier to fix packet stuck problem for lockless qdisc Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 115/298] tcp: tcp_rtx_synack() can be called from process context Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 116/298] vdpa: ifcvf: set pci driver data in probe Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 117/298] octeontx2-af: fix error code in is_valid_offset() Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 118/298] macsec: fix UAF bug for real_dev Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 119/298] s390/mcck: isolate SIE instruction when setting CIF_MCCK_GUEST flag Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 120/298] regulator: mt6315-regulator: fix invalid allowed mode Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 121/298] gpio: pca953x: use the correct register address to do regcache sync Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 122/298] afs: Fix infinite loop found by xfstest generic/676 Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 123/298] drm/msm/dp: Always clear mask bits to disable interrupts at dp_ctrl_reset_irq_ctrl() Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 124/298] scsi: sd: Fix potential NULL pointer dereference Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 125/298] ax25: Fix ax25 session cleanup problems Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 126/298] tipc: check attribute length for bearer name Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 127/298] driver core: Fix wait_for_device_probe() & deferred_probe_timeout interaction Greg Kroah-Hartman
2023-08-16 9:39 ` Shreeya Patel
2023-08-16 10:10 ` Geert Uytterhoeven
2023-08-16 10:15 ` Geert Uytterhoeven
2023-08-16 15:03 ` Greg Kroah-Hartman
2023-08-17 11:36 ` Shreeya Patel
2023-08-17 18:33 ` Saravana Kannan
2023-08-17 23:13 ` Shreeya Patel
2023-08-18 20:19 ` Saravana Kannan
2023-08-21 11:35 ` Shreeya Patel
2023-08-21 12:39 ` Robin Murphy
2023-08-21 13:11 ` Mark Brown
2023-08-22 14:10 ` Shreeya Patel
2023-08-23 20:59 ` Saravana Kannan
2022-06-13 10:10 ` [PATCH 5.17 128/298] perf evsel: Fixes topdown events in a weak group for the hybrid platform Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 129/298] perf parse-events: Move slots event for the hybrid platform too Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 130/298] perf record: Support sample-read topdown metric group for hybrid platforms Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 131/298] perf c2c: Fix sorting in percent_rmt_hitm_cmp() Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 132/298] Bluetooth: MGMT: Add conditions for setting HCI_CONN_FLAG_REMOTE_WAKEUP Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 133/298] Bluetooth: hci_sync: Fix attempting to suspend with unfiltered passive scan Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 134/298] bluetooth: dont use bitmaps for random flag accesses Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 135/298] dmaengine: idxd: set DMA_INTERRUPT cap bit Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 136/298] mips: cpc: Fix refcount leak in mips_cpc_default_phys_base Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 137/298] bootconfig: Make the bootconfig.o as a normal object file Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 138/298] tracing: Make tp_printk work on syscall tracepoints Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 139/298] tracing: Fix sleeping function called from invalid context on RT kernel Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 140/298] tracing: Avoid adding tracer option before update_tracer_options Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 141/298] iommu/arm-smmu: fix possible null-ptr-deref in arm_smmu_device_probe() Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 142/298] iommu/arm-smmu-v3: check return value after calling platform_get_resource() Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 143/298] f2fs: remove WARN_ON in f2fs_is_valid_blkaddr Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 144/298] i2c: cadence: Increase timeout per message if necessary Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 145/298] m68knommu: set ZERO_PAGE() to the allocated zeroed page Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 146/298] m68knommu: fix undefined reference to `_init_sp Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 147/298] dmaengine: zynqmp_dma: In struct zynqmp_dma_chan fix desc_size data type Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 148/298] NFSv4: Dont hold the layoutget locks across multiple RPC calls Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 149/298] video: fbdev: hyperv_fb: Allow resolutions with size > 64 MB for Gen1 Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 150/298] video: fbdev: pxa3xx-gcu: release the resources correctly in pxa3xx_gcu_probe/remove() Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 151/298] RISC-V: use memcpy for kexec_file mode Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 152/298] m68knommu: fix undefined reference to `mach_get_rtc_pll Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 153/298] rtla/Makefile: Properly handle dependencies Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 154/298] f2fs: fix to tag gcing flag on page during file defragment Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 155/298] xprtrdma: treat all calls not a bcall when bc_serv is NULL Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 156/298] drm/bridge: ti-sn65dsi83: Handle dsi_lanes == 0 as invalid Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 157/298] drm/panfrost: Job should reference MMU not file_priv Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 158/298] netfilter: nat: really support inet nat without l3 address Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 159/298] netfilter: nf_tables: use kfree_rcu(ptr, rcu) to release hooks in clean_net path Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 160/298] netfilter: nf_tables: delete flowtable hooks via transaction list Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 161/298] powerpc/kasan: Force thread size increase with KASAN Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 162/298] SUNRPC: Trap RDMA segment overflows Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 163/298] netfilter: nf_tables: always initialize flowtable hook list in transaction Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 164/298] ata: pata_octeon_cf: Fix refcount leak in octeon_cf_probe Greg Kroah-Hartman
2022-06-13 10:10 ` [PATCH 5.17 165/298] netfilter: nf_tables: release new hooks on unsupported flowtable flags Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 166/298] netfilter: nf_tables: memleak flow rule from commit path Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 167/298] netfilter: nf_tables: bail out early if hardware offload is not supported Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 168/298] amt: fix wrong usage of pskb_may_pull() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 169/298] amt: fix possible null-ptr-deref in amt_rcv() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 170/298] amt: fix wrong type string definition Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 171/298] net: ethernet: bgmac: Fix refcount leak in bcma_mdio_mii_register Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 172/298] xen: unexport __init-annotated xen_xlate_map_ballooned_pages() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 173/298] stmmac: intel: Fix an error handling path in intel_eth_pci_probe() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 174/298] af_unix: Fix a data-race in unix_dgram_peer_wake_me() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 175/298] x86: drop bogus "cc" clobber from __try_cmpxchg_user_asm() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 176/298] bpf, arm64: Clear prog->jited_len along prog->jited Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 177/298] net: dsa: lantiq_gswip: Fix refcount leak in gswip_gphy_fw_list Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 178/298] net/mlx4_en: Fix wrong return value on ioctl EEPROM query failure Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 179/298] i40e: xsk: Move tmp desc array from driver to pool Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 180/298] xsk: Fix handling of invalid descriptors in XSK TX batching API Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 181/298] SUNRPC: Fix the calculation of xdr->end in xdr_get_next_encode_buffer() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 182/298] net: mdio: unexport __init-annotated mdio_bus_init() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 183/298] net: xfrm: unexport __init-annotated xfrm4_protocol_init() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 184/298] net: ipv6: unexport __init-annotated seg6_hmac_init() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 185/298] net/mlx5: Lag, filter non compatible devices Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 186/298] net/mlx5: Fix mlx5_get_next_dev() peer device matching Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 187/298] net/mlx5: Rearm the FW tracer after each tracer event Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 188/298] net/mlx5: fs, fail conflicting actions Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 189/298] ip_gre: test csum_start instead of transport header Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 190/298] net: altera: Fix refcount leak in altera_tse_mdio_create Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 191/298] net: dsa: mv88e6xxx: use BMSR_ANEGCOMPLETE bit for filling an_complete Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 192/298] tcp: use alloc_large_system_hash() to allocate table_perturb Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 193/298] drm: imx: fix compiler warning with gcc-12 Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 194/298] nfp: flower: restructure flow-key for gre+vlan combination Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 195/298] iov_iter: Fix iter_xarray_get_pages{,_alloc}() Greg Kroah-Hartman
2022-06-13 10:11 ` Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 196/298] iio: dummy: iio_simple_dummy: check the return value of kstrdup() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 197/298] staging: rtl8712: fix a potential memory leak in r871xu_drv_init() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 198/298] iio: st_sensors: Add a local lock for protecting odr Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 199/298] lkdtm/usercopy: Expand size of "out of frame" object Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 200/298] drivers: staging: rtl8723bs: Fix deadlock in rtw_surveydone_event_callback() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 201/298] drivers: staging: rtl8192bs: Fix deadlock in rtw_joinbss_event_prehandle() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 202/298] tty: synclink_gt: Fix null-pointer-dereference in slgt_clean() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 203/298] tty: Fix a possible resource leak in icom_probe Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 204/298] thunderbolt: Use different lane for second DisplayPort tunnel Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 205/298] drivers: staging: rtl8192u: Fix deadlock in ieee80211_beacons_stop() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 206/298] drivers: staging: rtl8192e: Fix deadlock in rtllib_beacons_stop() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 207/298] USB: host: isp116x: check return value after calling platform_get_resource() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 208/298] drivers: tty: serial: Fix deadlock in sa1100_set_termios() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 209/298] drivers: usb: host: Fix deadlock in oxu_bus_suspend() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 210/298] USB: hcd-pci: Fully suspend across freeze/thaw cycle Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 211/298] char: xillybus: fix a refcount leak in cleanup_dev() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 212/298] sysrq: do not omit current cpu when showing backtrace of all active CPUs Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 213/298] usb: dwc2: gadget: dont reset gadgets driver->bus Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 214/298] usb: dwc3: host: Stop setting the ACPI companion Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 215/298] soundwire: qcom: adjust autoenumeration timeout Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 216/298] misc: rtsx: set NULL intfdata when probe fails Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 217/298] extcon: Fix extcon_get_extcon_dev() error handling Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 218/298] extcon: Modify extcon device to be created after driver data is set Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 219/298] clocksource/drivers/sp804: Avoid error on multiple instances Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 220/298] staging: rtl8712: fix uninit-value in usb_read8() and friends Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 221/298] staging: rtl8712: fix uninit-value in r871xu_drv_init() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 222/298] serial: msm_serial: disable interrupts in __msm_console_write() Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 223/298] kernfs: Separate kernfs_pr_cont_buf and rename_lock Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 224/298] watchdog: wdat_wdt: Stop watchdog when rebooting the system Greg Kroah-Hartman
2022-06-13 10:11 ` [PATCH 5.17 225/298] ksmbd: smbd: fix connection dropped issue Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 226/298] md: protect md_unregister_thread from reentrancy Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 227/298] scsi: myrb: Fix up null pointer access on myrb_cleanup() Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 228/298] ASoC: rt5640: Do not manipulate pin "Platform Clock" if the "Platform Clock" is not in the DAPM Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 229/298] Revert "net: af_key: add check for pfkey_broadcast in function pfkey_process" Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 230/298] ceph: allow ceph.dir.rctime xattr to be updatable Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 231/298] ceph: flush the mdlog for filesystem sync Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 232/298] net, neigh: Set lower cap for neigh_managed_work rearming Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 233/298] drm/amd/display: Check if modulo is 0 before dividing Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 234/298] drm/radeon: fix a possible null pointer dereference Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 235/298] drm/amd/pm: fix a potential gpu_metrics_table memory leak Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 236/298] drm/amd/pm: Fix missing thermal throttler status Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 237/298] um: line: Use separate IRQs per line Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 238/298] modpost: fix undefined behavior of is_arm_mapping_symbol() Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 239/298] x86/cpu: Elide KCSAN for cpu_has() and friends Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 240/298] jump_label,noinstr: Avoid instrumentation for JUMP_LABEL=n builds Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 241/298] nbd: call genl_unregister_family() first in nbd_cleanup() Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 242/298] nbd: fix race between nbd_alloc_config() and module removal Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 243/298] nbd: fix io hung while disconnecting device Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 244/298] Revert "PCI: brcmstb: Do not turn off WOL regulators on suspend" Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 245/298] Revert "PCI: brcmstb: Add control of subdevice voltage regulators" Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 246/298] Revert "PCI: brcmstb: Add mechanism to turn on subdev regulators" Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 247/298] Revert "PCI: brcmstb: Split brcm_pcie_setup() into two funcs" Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 248/298] s390/gmap: voluntarily schedule during key setting Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 249/298] cifs: version operations for smb20 unneeded when legacy support disabled Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 250/298] drm/amd/pm: use bitmap_{from,to}_arr32 where appropriate Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 251/298] nodemask: Fix return values to be unsigned Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 252/298] vringh: Fix loop descriptors check in the indirect cases Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 253/298] platform/x86: barco-p50-gpio: Add check for platform_driver_register Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 254/298] scripts/gdb: change kernel config dumping method Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 255/298] platform/x86: hp-wmi: Fix hp_wmi_read_int() reporting error (0x05) Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 256/298] platform/x86: hp-wmi: Use zero insize parameter only when supported Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 257/298] ALSA: usb-audio: Skip generic sync EP parse for secondary EP Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 258/298] ALSA: usb-audio: Set up (implicit) sync for Saffire 6 Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 259/298] ALSA: hda/conexant - Fix loopback issue with CX20632 Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 260/298] ALSA: hda/realtek: Fix for quirk to enable speaker output on the Lenovo Yoga DuetITL 2021 Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 261/298] ALSA: hda/realtek: Add quirk for HP Dev One Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 262/298] cifs: return errors during session setup during reconnects Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 263/298] cifs: fix reconnect on smb3 mount types Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 264/298] cifs: populate empty hostnames for extra channels Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 265/298] scsi: sd: Fix interpretation of VPD B9h length Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 266/298] KEYS: trusted: tpm2: Fix migratable logic Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 267/298] libata: fix reading concurrent positioning ranges log Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 268/298] libata: fix translation of concurrent positioning ranges Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 269/298] ata: libata-transport: fix {dma|pio|xfer}_mode sysfs files Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 270/298] mmc: block: Fix CQE recovery reset success Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 271/298] net: phy: dp83867: retrigger SGMII AN when link change Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 272/298] net: openvswitch: fix misuse of the cached connection on tuple changes Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 273/298] writeback: Fix inode->i_io_list not be protected by inode->i_lock error Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 274/298] nfc: st21nfca: fix incorrect validating logic in EVT_TRANSACTION Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 275/298] nfc: st21nfca: fix memory leaks in EVT_TRANSACTION handling Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 276/298] nfc: st21nfca: fix incorrect sizing calculations in EVT_TRANSACTION Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 277/298] ixgbe: fix bcast packets Rx on VF after promisc removal Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 278/298] ixgbe: fix unexpected VLAN Rx in promisc mode on VF Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 279/298] Input: bcm5974 - set missing URB_NO_TRANSFER_DMA_MAP urb flag Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 280/298] vduse: Fix NULL pointer dereference on sysfs access Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 281/298] cpuidle,intel_idle: Fix CPUIDLE_FLAG_IRQ_ENABLE Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 282/298] mm/huge_memory: Fix xarray node memory leak Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 283/298] powerpc: Dont select HAVE_IRQ_EXIT_ON_IRQ_STACK Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 284/298] drm/bridge: analogix_dp: Support PSR-exit to disable transition Greg Kroah-Hartman
2022-06-13 10:12 ` [PATCH 5.17 285/298] drm/atomic: Force bridge self-refresh-exit on CRTC switch Greg Kroah-Hartman
2022-06-13 10:13 ` [PATCH 5.17 286/298] drm/amdgpu/jpeg2: Add jpeg vmid update under IB submit Greg Kroah-Hartman
2022-06-13 10:13 ` [PATCH 5.17 287/298] drm/amdgpu: update VCN codec support for Yellow Carp Greg Kroah-Hartman
2022-06-13 10:13 ` [PATCH 5.17 288/298] virtio-rng: make device ready before making request Greg Kroah-Hartman
2022-06-13 10:13 ` [PATCH 5.17 289/298] powerpc/32: Fix overread/overwrite of thread_struct via ptrace Greg Kroah-Hartman
2022-06-13 10:13 ` [PATCH 5.17 290/298] drm/ast: Create threshold values for AST2600 Greg Kroah-Hartman
2022-06-13 10:13 ` [PATCH 5.17 291/298] random: avoid checking crng_ready() twice in random_init() Greg Kroah-Hartman
2022-06-13 10:13 ` [PATCH 5.17 292/298] random: mark bootloader randomness code as __init Greg Kroah-Hartman
2022-06-13 10:13 ` [PATCH 5.17 293/298] random: account for arch randomness in bits Greg Kroah-Hartman
2022-06-13 10:13 ` [PATCH 5.17 294/298] md/raid0: Ignore RAID0 layout if the second zone has only one device Greg Kroah-Hartman
2022-06-13 10:13 ` [PATCH 5.17 295/298] net/sched: act_police: more accurate MTU policing Greg Kroah-Hartman
2022-06-13 10:13 ` [PATCH 5.17 296/298] block, loop: support partitions without scanning Greg Kroah-Hartman
2022-06-13 10:13 ` [PATCH 5.17 297/298] PCI: qcom: Fix pipe clock imbalance Greg Kroah-Hartman
2022-06-13 10:13 ` [PATCH 5.17 298/298] zonefs: fix handling of explicit_open option on mount Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220613094927.953566353@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ncardwell@google.com \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
--cc=ycheng@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.