Skip to content

Commit

Permalink
net: support 64bit values for setsockopt(SO_MAX_PACING_RATE)
Browse files Browse the repository at this point in the history
64bit kernels now support 64bit pacing rates.

This commit changes setsockopt() to accept 64bit
values provided by applications.

Old applications providing 32bit value are still supported,
but limited to the old 34Gbit limitation.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Eric Dumazet authored and David S. Miller committed Mar 2, 2019
1 parent 255c1c7 commit 6bdef10
Showing 1 changed file with 13 additions and 5 deletions.
18 changes: 13 additions & 5 deletions net/core/sock.c
Original file line number Diff line number Diff line change
Expand Up @@ -1108,15 +1108,23 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
#endif

case SO_MAX_PACING_RATE:
if (val != ~0U)
{
unsigned long ulval = (val == ~0U) ? ~0UL : val;

if (sizeof(ulval) != sizeof(val) &&
optlen >= sizeof(ulval) &&
get_user(ulval, (unsigned long __user *)optval)) {
ret = -EFAULT;
break;
}
if (ulval != ~0UL)
cmpxchg(&sk->sk_pacing_status,
SK_PACING_NONE,
SK_PACING_NEEDED);
sk->sk_max_pacing_rate = (val == ~0U) ? ~0UL : val;
sk->sk_pacing_rate = min(sk->sk_pacing_rate,
sk->sk_max_pacing_rate);
sk->sk_max_pacing_rate = ulval;
sk->sk_pacing_rate = min(sk->sk_pacing_rate, ulval);
break;

}
case SO_INCOMING_CPU:
sk->sk_incoming_cpu = val;
break;
Expand Down

0 comments on commit 6bdef10

Please sign in to comment.