PANIC: sent too much
Andre Oppermann
andre at freebsd.org
Tue Jan 20 10:54:13 PST 2004
> On Tue, Jan 20, 2004 at 01:42:33PM +0100, Jiri Mikulas wrote:
>> hello
>> sometimes i got this panic
>> with high load on network interfaces
>>
>> Panicstring: sent too much
>
> I've seen that panicstring with a Jan 12 kernel on my fxp using athlon
> system. I didn't have crashdumps setup but I took digital pictures I
> can trascribe if necessary.
>
> I don't think mine was associated too much with high network activity,
> but I didn't check too close. It didn't stay up for more than 12 hours
> at a time and the shortest uptime was probably 10 minutes. It's all new
> hardware so I was suspecting hardware for a while.
>
> I think I'm running a Jan 14 or 15 kernel now with no panics (so I no
> longer suspect the hardware). I can check the exact cvsup date when I
> get to work. Wish I had Wi-Fi on the MTA North.
Could you please try the attached patch. This is a fix by Jeffrey Hsu
taken from DFBSD. The problem is insufficient updating of some internal
tcp variables. This comes into play when there is packet loss on a
connection which is quite common on wireless links. ;)
--
Andre
Index: tcp_input.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/tcp_input.c,v
retrieving revision 1.219
diff -u -p -r1.219 tcp_input.c
--- tcp_input.c 8 Jan 2004 17:40:06 -0000 1.219
+++ tcp_input.c 20 Jan 2004 18:46:51 -0000
@@ -1859,13 +1859,12 @@ trimthenstep6:
KASSERT(tp->t_dupacks == 1 ||
tp->t_dupacks == 2,
("dupacks not 1 or 2"));
- if (tp->t_dupacks == 1) {
+ if (tp->t_dupacks == 1)
tp->snd_limited = 0;
- tp->snd_cwnd += tp->t_maxseg;
- } else {
- tp->snd_cwnd +=
- tp->t_maxseg * 2;
- }
+ tp->snd_cwnd =
+ (tp->snd_nxt - tp->snd_una) +
+ (tp->t_dupacks - tp->snd_limited) *
+ tp->t_maxseg;
(void) tcp_output(tp);
sent = tp->snd_max - oldsndmax;
if (sent > tp->t_maxseg) {
More information about the freebsd-current
mailing list