{
if (sock_flag(sk, SOCK_TIMESTAMP)) {
sock_reset_flag(sk, SOCK_TIMESTAMP);
- atomic_dec(&netstamp_needed);
+ net_disable_timestamp();
}
}
} else
sk->sk_sleep = NULL;
- sk->sk_dst_lock = RW_LOCK_UNLOCKED;
- sk->sk_callback_lock = RW_LOCK_UNLOCKED;
+ rwlock_init(&sk->sk_dst_lock);
+ rwlock_init(&sk->sk_callback_lock);
sk->sk_state_change = sock_def_wakeup;
sk->sk_data_ready = sock_def_readable;
}
EXPORT_SYMBOL(release_sock);
-/* When > 0 there are consumers of rx skb time stamps */
-atomic_t netstamp_needed = ATOMIC_INIT(0);
-
int sock_get_timestamp(struct sock *sk, struct timeval __user *userstamp)
{
if (!sock_flag(sk, SOCK_TIMESTAMP))
{
if (!sock_flag(sk, SOCK_TIMESTAMP)) {
sock_set_flag(sk, SOCK_TIMESTAMP);
- atomic_inc(&netstamp_needed);
+ net_enable_timestamp();
}
}
EXPORT_SYMBOL(sock_enable_timestamp);