|
@@ -2640,8 +2640,10 @@ int __tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb)
|
|
*/
|
|
*/
|
|
if (unlikely((NET_IP_ALIGN && ((unsigned long)skb->data & 3)) ||
|
|
if (unlikely((NET_IP_ALIGN && ((unsigned long)skb->data & 3)) ||
|
|
skb_headroom(skb) >= 0xFFFF)) {
|
|
skb_headroom(skb) >= 0xFFFF)) {
|
|
- struct sk_buff *nskb = __pskb_copy(skb, MAX_TCP_HEADER,
|
|
|
|
- GFP_ATOMIC);
|
|
|
|
|
|
+ struct sk_buff *nskb;
|
|
|
|
+
|
|
|
|
+ skb_mstamp_get(&skb->skb_mstamp);
|
|
|
|
+ nskb = __pskb_copy(skb, MAX_TCP_HEADER, GFP_ATOMIC);
|
|
err = nskb ? tcp_transmit_skb(sk, nskb, 0, GFP_ATOMIC) :
|
|
err = nskb ? tcp_transmit_skb(sk, nskb, 0, GFP_ATOMIC) :
|
|
-ENOBUFS;
|
|
-ENOBUFS;
|
|
} else {
|
|
} else {
|