[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20180105113256.14835-2-natale.patriciello@gmail.com>
Date: Fri, 5 Jan 2018 12:32:54 +0100
From: Natale Patriciello <natale.patriciello@...il.com>
To: netdev@...r.kernel.org
Cc: Natale Patriciello <natale.patriciello@...il.com>,
Carlo Augusto Grazia <carloaugusto.grazia@...more.it>,
Eric Dumazet <edumazet@...gle.com>
Subject: [RFC PATCH 1/3] Revert "tcp: allow drivers to tweak TSQ logic"
There are a lot of drivers that are still outside the mainline, and it is
impossible to expect the authors (which in most cases do not maintain the
driver anymore) to check the best value for the device, and then to insert
it into the driver code. Moreover, if the users want to check or to use
other values, they have to recompile the driver (or the kernel).
This reverts commit 3a9b76fd0db9f0d426533f96a68a62a58753a51e, preparing the
field for tunable sysctl knobs.
Signed-off-by: Natale Patriciello <natale.patriciello@...il.com>
Signed-off-by: Carlo Augusto Grazia <carloaugusto.grazia@...more.it>
Cc: Eric Dumazet <edumazet@...gle.com>
---
include/net/sock.h | 2 --
net/core/sock.c | 1 -
net/ipv4/tcp_output.c | 4 ++--
3 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/include/net/sock.h b/include/net/sock.h
index 7a7b14e9628a..20c6a9ae25f4 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -267,7 +267,6 @@ struct sock_common {
* @sk_gso_type: GSO type (e.g. %SKB_GSO_TCPV4)
* @sk_gso_max_size: Maximum GSO segment size to build
* @sk_gso_max_segs: Maximum number of GSO segments
- * @sk_pacing_shift: scaling factor for TCP Small Queues
* @sk_lingertime: %SO_LINGER l_linger setting
* @sk_backlog: always used with the per-socket spinlock held
* @sk_callback_lock: used with the callbacks in the end of this struct
@@ -449,7 +448,6 @@ struct sock {
sk_type : 16;
#define SK_PROTOCOL_MAX U8_MAX
u16 sk_gso_max_segs;
- u8 sk_pacing_shift;
unsigned long sk_lingertime;
struct proto *sk_prot_creator;
rwlock_t sk_callback_lock;
diff --git a/net/core/sock.c b/net/core/sock.c
index c0b5b2f17412..78e16e06b0b7 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -2744,7 +2744,6 @@ void sock_init_data(struct socket *sock, struct sock *sk)
sk->sk_max_pacing_rate = ~0U;
sk->sk_pacing_rate = ~0U;
- sk->sk_pacing_shift = 10;
sk->sk_incoming_cpu = -1;
/*
* Before updating sk_refcnt, we must commit prior changes to memory
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index a4d214c7b506..ef1ae727320f 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -1720,7 +1720,7 @@ u32 tcp_tso_autosize(const struct sock *sk, unsigned int mss_now,
{
u32 bytes, segs;
- bytes = min(sk->sk_pacing_rate >> sk->sk_pacing_shift,
+ bytes = min(sk->sk_pacing_rate >> 10,
sk->sk_gso_max_size - 1 - MAX_TCP_HEADER);
/* Goal is to send at least one packet per ms,
@@ -2198,7 +2198,7 @@ static bool tcp_small_queue_check(struct sock *sk, const struct sk_buff *skb,
{
unsigned int limit;
- limit = max(2 * skb->truesize, sk->sk_pacing_rate >> sk->sk_pacing_shift);
+ limit = max(2 * skb->truesize, sk->sk_pacing_rate >> 10);
limit = min_t(u32, limit,
sock_net(sk)->ipv4.sysctl_tcp_limit_output_bytes);
limit <<= factor;
--
2.15.1
Powered by blists - more mailing lists