const struct sockcm_cookie *sockc)
 {
        struct sock *sk = skb ? skb->sk : NULL;
+       int key;
 
        /* This shall be called on a single skb of those generated by user
         * sendmsg(), and only when the sendmsg() does not return error to
 
        sock_tx_timestamp(sk, sockc, &skb_shinfo(skb)->tx_flags);
 
+       if (sk->sk_type == SOCK_STREAM)
+               key = atomic_add_return(key_offset, &sk->sk_tskey);
+
        if (sockc->tsflags & SOF_TIMESTAMPING_OPT_ID &&
            sockc->tsflags & SOF_TIMESTAMPING_TX_RECORD_MASK) {
                if (sockc->tsflags & SOCKCM_FLAG_TS_OPT_ID) {
                        skb_shinfo(skb)->tskey = sockc->ts_opt_id;
                } else {
-                       int key = atomic_add_return(key_offset, &sk->sk_tskey);
-
+                       if (sk->sk_type != SOCK_STREAM)
+                               key = atomic_inc_return(&sk->sk_tskey);
                        skb_shinfo(skb)->tskey = key - 1;
                }
        }