Len Brown 20 жил өмнө
parent
commit
13779c7391

+ 1 - 1
MAINTAINERS

@@ -784,7 +784,7 @@ DVB SUBSYSTEM AND DRIVERS
 P:	LinuxTV.org Project
 P:	LinuxTV.org Project
 M: 	linux-dvb-maintainer@linuxtv.org
 M: 	linux-dvb-maintainer@linuxtv.org
 L: 	linux-dvb@linuxtv.org (subscription required)
 L: 	linux-dvb@linuxtv.org (subscription required)
-W:	http://linuxtv.org/developer/dvb.xml
+W:	http://linuxtv.org/
 S:	Supported
 S:	Supported
 
 
 EATA-DMA SCSI DRIVER
 EATA-DMA SCSI DRIVER

+ 10 - 4
net/ipv4/tcp_output.c

@@ -1370,15 +1370,21 @@ int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb)
 
 
 	if (skb->len > cur_mss) {
 	if (skb->len > cur_mss) {
 		int old_factor = tcp_skb_pcount(skb);
 		int old_factor = tcp_skb_pcount(skb);
-		int new_factor;
+		int diff;
 
 
 		if (tcp_fragment(sk, skb, cur_mss, cur_mss))
 		if (tcp_fragment(sk, skb, cur_mss, cur_mss))
 			return -ENOMEM; /* We'll try again later. */
 			return -ENOMEM; /* We'll try again later. */
 
 
 		/* New SKB created, account for it. */
 		/* New SKB created, account for it. */
-		new_factor = tcp_skb_pcount(skb);
-		tp->packets_out -= old_factor - new_factor;
-		tp->packets_out += tcp_skb_pcount(skb->next);
+		diff = old_factor - tcp_skb_pcount(skb) -
+		       tcp_skb_pcount(skb->next);
+		tp->packets_out -= diff;
+
+		if (diff > 0) {
+			tp->fackets_out -= diff;
+			if ((int)tp->fackets_out < 0)
+				tp->fackets_out = 0;
+		}
 	}
 	}
 
 
 	/* Collapse two adjacent packets if worthwhile and we can. */
 	/* Collapse two adjacent packets if worthwhile and we can. */