Merge tag 'mac80211-for-davem-2016-04-06' of git://git.kernel.org/pub/scm/linux/kerne...
[deliverable/linux.git] / net / rds / af_rds.c
index b5476aebd68d842e7e1b7ced45809a4c964e648e..6beaeb1138f34a82f0d0a70f86dc5caba4d0ac5d 100644 (file)
@@ -277,6 +277,27 @@ static int rds_set_transport(struct rds_sock *rs, char __user *optval,
        return rs->rs_transport ? 0 : -ENOPROTOOPT;
 }
 
+static int rds_enable_recvtstamp(struct sock *sk, char __user *optval,
+                                int optlen)
+{
+       int val, valbool;
+
+       if (optlen != sizeof(int))
+               return -EFAULT;
+
+       if (get_user(val, (int __user *)optval))
+               return -EFAULT;
+
+       valbool = val ? 1 : 0;
+
+       if (valbool)
+               sock_set_flag(sk, SOCK_RCVTSTAMP);
+       else
+               sock_reset_flag(sk, SOCK_RCVTSTAMP);
+
+       return 0;
+}
+
 static int rds_setsockopt(struct socket *sock, int level, int optname,
                          char __user *optval, unsigned int optlen)
 {
@@ -312,6 +333,11 @@ static int rds_setsockopt(struct socket *sock, int level, int optname,
                ret = rds_set_transport(rs, optval, optlen);
                release_sock(sock->sk);
                break;
+       case SO_TIMESTAMP:
+               lock_sock(sock->sk);
+               ret = rds_enable_recvtstamp(sock->sk, optval, optlen);
+               release_sock(sock->sk);
+               break;
        default:
                ret = -ENOPROTOOPT;
        }
This page took 0.028752 seconds and 5 git commands to generate.