]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - net/ipv4/udp_offload.c
Merge tag 'tty-5.3-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
[linux.git] / net / ipv4 / udp_offload.c
index 06b3e2c1fcdc9cdd4e7d85b4dd035e9a8cf5e96a..a3908e55ed89aa519ab761f3e4690819efe7ff33 100644 (file)
@@ -208,7 +208,7 @@ struct sk_buff *__udp_gso_segment(struct sk_buff *gso_skb,
                gso_skb->destructor = NULL;
 
        segs = skb_segment(gso_skb, features);
-       if (unlikely(IS_ERR_OR_NULL(segs))) {
+       if (IS_ERR_OR_NULL(segs)) {
                if (copy_dtor)
                        gso_skb->destructor = sock_wfree;
                return segs;
@@ -224,6 +224,11 @@ struct sk_buff *__udp_gso_segment(struct sk_buff *gso_skb,
        seg = segs;
        uh = udp_hdr(seg);
 
+       /* preserve TX timestamp flags and TS key for first segment */
+       skb_shinfo(seg)->tskey = skb_shinfo(gso_skb)->tskey;
+       skb_shinfo(seg)->tx_flags |=
+                       (skb_shinfo(gso_skb)->tx_flags & SKBTX_ANY_TSTAMP);
+
        /* compute checksum adjustment based on old length versus new */
        newlen = htons(sizeof(*uh) + mss);
        check = csum16_add(csum16_sub(uh->check, uh->len), newlen);