sctp: use inet_recvmsg to support sctp RFS well
authorXin Long <lucien.xin@gmail.com>
Fri, 22 Jul 2016 13:25:42 +0000 (21:25 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 25 Jul 2016 17:56:28 +0000 (10:56 -0700)
Commit 486bdee0134c ("sctp: add support for RPS and RFS")
saves skb->hash into sk->sk_rxhash so that the inet_* can
record it to flow table.

But sctp uses sock_common_recvmsg as .recvmsg instead
of inet_recvmsg, sock_common_recvmsg doesn't invoke
sock_rps_record_flow to record the flow. It may cause
that the receiver has no chances to record the flow if
it doesn't send msg or poll the socket.

So this patch fixes it by using inet_recvmsg as .recvmsg
in sctp.

Fixes: 486bdee0134c ("sctp: add support for RPS and RFS")
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/ipv6.c
net/sctp/protocol.c

index 660c4a4cac31717a93dc274227eab2e7ae42ff30..f473779e8b1c3f4d82f47fe5d2ccadc2d47af45f 100644 (file)
@@ -956,7 +956,7 @@ static const struct proto_ops inet6_seqpacket_ops = {
        .setsockopt        = sock_common_setsockopt,
        .getsockopt        = sock_common_getsockopt,
        .sendmsg           = inet_sendmsg,
-       .recvmsg           = sock_common_recvmsg,
+       .recvmsg           = inet_recvmsg,
        .mmap              = sock_no_mmap,
 #ifdef CONFIG_COMPAT
        .compat_setsockopt = compat_sock_common_setsockopt,
index 1adb9270e31786c3a8131f0c24e58fe1b41ccc9b..7b523e3f551f1761d891b606f293b2b721a87ca8 100644 (file)
@@ -1028,7 +1028,7 @@ static const struct proto_ops inet_seqpacket_ops = {
        .setsockopt        = sock_common_setsockopt, /* IP_SOL IP_OPTION is a problem */
        .getsockopt        = sock_common_getsockopt,
        .sendmsg           = inet_sendmsg,
-       .recvmsg           = sock_common_recvmsg,
+       .recvmsg           = inet_recvmsg,
        .mmap              = sock_no_mmap,
        .sendpage          = sock_no_sendpage,
 #ifdef CONFIG_COMPAT