diff options
author | Eric Dumazet <edumazet@google.com> | 2017-12-12 06:34:19 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-12-13 15:10:57 -0500 |
commit | c9f1f58dc2eba550f208809d272bf0b14f41edba (patch) | |
tree | 4c494f3f92e9a221d159f298800e5a88437c7fad /include | |
parent | eb7935830d00b9e0c4ca11382143ea2320eb45c2 (diff) | |
download | talos-obmc-linux-c9f1f58dc2eba550f208809d272bf0b14f41edba.tar.gz talos-obmc-linux-c9f1f58dc2eba550f208809d272bf0b14f41edba.zip |
net: sk_pacing_shift_update() helper
In commit 3a9b76fd0db9 ("tcp: allow drivers to tweak TSQ logic")
I gave a code sample to set sk->sk_pacing_shift that was not complete.
Better add a helper that can be used by drivers without worries,
and maybe amended in the future.
A wifi driver might use it from its ndo_start_xmit()
Following call would setup TCP to allow up to ~8ms of queued data per
flow.
sk_pacing_shift_update(skb->sk, 7);
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/sock.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/include/net/sock.h b/include/net/sock.h index 9155da422692..9a9047268d37 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -2407,4 +2407,15 @@ static inline int sk_get_rmem0(const struct sock *sk, const struct proto *proto) return *proto->sysctl_rmem; } +/* Default TCP Small queue budget is ~1 ms of data (1sec >> 10) + * Some wifi drivers need to tweak it to get more chunks. + * They can use this helper from their ndo_start_xmit() + */ +static inline void sk_pacing_shift_update(struct sock *sk, int val) +{ + if (!sk || !sk_fullsock(sk) || sk->sk_pacing_shift == val) + return; + sk->sk_pacing_shift = val; +} + #endif /* _SOCK_H */ |