diff options
author | Eric Dumazet <edumazet@google.com> | 2017-12-12 15:34:19 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-12-13 21:10:57 +0100 |
commit | c9f1f58dc2eba550f208809d272bf0b14f41edba (patch) | |
tree | 4c494f3f92e9a221d159f298800e5a88437c7fad /include/net/sock.h | |
parent | net: bridge: use rhashtable for fdbs (diff) | |
download | linux-c9f1f58dc2eba550f208809d272bf0b14f41edba.tar.xz 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/net/sock.h')
-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 */ |