2003-09-03 11:08:23

by peter_daum

[permalink] [raw]
Subject: 2.4.22 with CONFIG_M686: networking broken

Hi,

It seems, like kernel version 2.4.22 introduced some weird bug,
that causes all kinds of network malfunctions, when the kernel is
compiled with "CONFIG_M686".

I am sorry, that I can't come up with a clearer error
description, but the whole issue is pretty mysterious: there is
no actual error occurring, but some networking functionality is so
slow that it's for all practical purposes useless. The best test
cases I could find are:

- getting a file via ftp (e.g. wget ftp://...): Data rate over a
normally fast network connection is ~ 200 bytes /second, the
connection soon dies with a timeout

- writing to a SMB share (provided, that samba is running on the
machine) is awfully slow and eventually aborted (Windows
complains about "network congestion")
reading via SMB works as usual ...

I upgraded the kernel on a bunch of machines - on most of them, I
had to immediately go back to the previous kernel because there
were obvious problems; some machines, however, worked perfectly
normal with the new kernel.

I tried lots of different options until I eventually found out,
that the single setting that makes all the difference is the
processor type: Independently of any other settings, all kernels
with "CONFIG_M686" exhibit these problems; when I change this to
"CONFIG_MPENTIUM4" and recompile, everything seems to work.

(By the way: the affected machines have "Pentium Pro" or "Pentium
II" processors - is it safe to run a kernel compiled for "Pentium
IV" on such boxes?)

Regards,
Peter Daum


2003-09-04 07:25:01

by Matthias Andree

[permalink] [raw]
Subject: Re: 2.4.22 with CONFIG_M686: networking broken

On Wed, 03 Sep 2003, Peter Daum wrote:

> I tried lots of different options until I eventually found out,
> that the single setting that makes all the difference is the
> processor type: Independently of any other settings, all kernels
> with "CONFIG_M686" exhibit these problems; when I change this to
> "CONFIG_MPENTIUM4" and recompile, everything seems to work.

Which compiler version are you using?

--
Matthias Andree

Encrypt your mail: my GnuPG key ID is 0x052E7D95

Subject: Re: 2.4.22 with CONFIG_M686: networking broken


AFAIR local APIC is enabled by default for CONFIG_M686
and it is not for CONFIG_MPENTIUM4.

If you are using local APIC please try with "noapic" boot option
or recompile kernel without local APIC support.

This is just a guess...

--bartlomiej

On Wednesday 03 of September 2003 13:08, Peter Daum wrote:
> Hi,
>
> It seems, like kernel version 2.4.22 introduced some weird bug,
> that causes all kinds of network malfunctions, when the kernel is
> compiled with "CONFIG_M686".
>
> I am sorry, that I can't come up with a clearer error
> description, but the whole issue is pretty mysterious: there is
> no actual error occurring, but some networking functionality is so
> slow that it's for all practical purposes useless. The best test
> cases I could find are:
>
> - getting a file via ftp (e.g. wget ftp://...): Data rate over a
> normally fast network connection is ~ 200 bytes /second, the
> connection soon dies with a timeout
>
> - writing to a SMB share (provided, that samba is running on the
> machine) is awfully slow and eventually aborted (Windows
> complains about "network congestion")
> reading via SMB works as usual ...
>
> I upgraded the kernel on a bunch of machines - on most of them, I
> had to immediately go back to the previous kernel because there
> were obvious problems; some machines, however, worked perfectly
> normal with the new kernel.
>
> I tried lots of different options until I eventually found out,
> that the single setting that makes all the difference is the
> processor type: Independently of any other settings, all kernels
> with "CONFIG_M686" exhibit these problems; when I change this to
> "CONFIG_MPENTIUM4" and recompile, everything seems to work.
>
> (By the way: the affected machines have "Pentium Pro" or "Pentium
> II" processors - is it safe to run a kernel compiled for "Pentium
> IV" on such boxes?)
>
> Regards,
> Peter Daum

2003-09-04 16:33:07

by peter_daum

[permalink] [raw]
Subject: Re: 2.4.22 with CONFIG_M686: networking broken

Hi,

... the APIC settings don't have any effect on that issue.

I had the suspicion, that the compiler version might be a factor,
but this also turned out to be wrong (I tried gcc 2.95.2, 2.95.3,
3.2 and 3.3), but I eventually found out, that the differences I
observed were only a matter of which processor the machine that
the kernel runs on actually has:

- With "CONFIG_M686" or "CONFIG_M586TSC", the problems occur on
all machines, no matter which compiler or processor

- "CONFIG_M386"-kernels work, but only on a machine with Pentium4 (?!)
On Pentium Pro or Pentium II, it seems to cause the same
problems as "CONFIG_M686"

- The only setting that does not cause any obvious problems (and
seems to work even on Pentium Pro machines - do I have to
expect more trouble there?)

(As a side note: all the computers I am talking about use ATM/LANE for
network connectivity, but at least to me this does not look like an ATM-
related problem)

On Thu, 4 Sep 2003, Bartlomiej Zolnierkiewicz wrote:
> AFAIR local APIC is enabled by default for CONFIG_M686
> and it is not for CONFIG_MPENTIUM4.
[...]
> On Wednesday 03 of September 2003 13:08, Peter Daum wrote:
> > Hi,
> >
> > It seems, like kernel version 2.4.22 introduced some weird bug,
> > that causes all kinds of network malfunctions, when the kernel is
> > compiled with "CONFIG_M686".
> >
> > I am sorry, that I can't come up with a clearer error
> > description, but the whole issue is pretty mysterious: there is
> > no actual error occurring, but some networking functionality is so
> > slow that it's for all practical purposes useless. The best test
> > cases I could find are:
> >
> > - getting a file via ftp (e.g. wget ftp://...): Data rate over a
> > normally fast network connection is ~ 200 bytes /second, the
> > connection soon dies with a timeout
> >
> > - writing to a SMB share (provided, that samba is running on the
> > machine) is awfully slow and eventually aborted (Windows
> > complains about "network congestion")
> > reading via SMB works as usual ...
> >
> > I upgraded the kernel on a bunch of machines - on most of them, I
> > had to immediately go back to the previous kernel because there
> > were obvious problems; some machines, however, worked perfectly
> > normal with the new kernel.
> >
> > I tried lots of different options until I eventually found out,
> > that the single setting that makes all the difference is the
> > processor type: Independently of any other settings, all kernels
> > with "CONFIG_M686" exhibit these problems; when I change this to
> > "CONFIG_MPENTIUM4" and recompile, everything seems to work.
> >
> > (By the way: the affected machines have "Pentium Pro" or "Pentium
> > II" processors - is it safe to run a kernel compiled for "Pentium
> > IV" on such boxes?)
> >
> > Regards,
> > Peter Daum
>

2003-09-07 15:14:35

by Adrian Bunk

[permalink] [raw]
Subject: Re: 2.4.22 with CONFIG_M686: networking broken

On Wed, Sep 03, 2003 at 01:08:08PM +0200, Peter Daum wrote:

> Hi,

Hi Peter,

> It seems, like kernel version 2.4.22 introduced some weird bug,
> that causes all kinds of network malfunctions, when the kernel is
> compiled with "CONFIG_M686".
>...
> I tried lots of different options until I eventually found out,
> that the single setting that makes all the difference is the
> processor type: Independently of any other settings, all kernels
> with "CONFIG_M686" exhibit these problems; when I change this to
> "CONFIG_MPENTIUM4" and recompile, everything seems to work.

could you check whether the patch below fixes your problems?

> (By the way: the affected machines have "Pentium Pro" or "Pentium
> II" processors - is it safe to run a kernel compiled for "Pentium
> IV" on such boxes?)

No, it isn't safe.

> Regards,
> Peter Daum

cu
Adrian

--- linux-2.4.23-pre3-full/arch/i386/config.in.old 2003-09-07 17:10:31.000000000 +0200
+++ linux-2.4.23-pre3-full/arch/i386/config.in 2003-09-07 17:11:47.000000000 +0200
@@ -51,7 +51,7 @@
if [ "$CONFIG_M386" = "y" ]; then
define_bool CONFIG_X86_CMPXCHG n
define_bool CONFIG_X86_XADD n
- define_int CONFIG_X86_L1_CACHE_SHIFT 4
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_RWSEM_GENERIC_SPINLOCK y
define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM n
define_bool CONFIG_X86_PPRO_FENCE y
@@ -67,21 +67,21 @@
define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM y
fi
if [ "$CONFIG_M486" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_SHIFT 4
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_X86_USE_STRING_486 y
define_bool CONFIG_X86_ALIGNMENT_16 y
define_bool CONFIG_X86_PPRO_FENCE y
define_bool CONFIG_X86_F00F_WORKS_OK n
fi
if [ "$CONFIG_M586" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_SHIFT 5
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_X86_USE_STRING_486 y
define_bool CONFIG_X86_ALIGNMENT_16 y
define_bool CONFIG_X86_PPRO_FENCE y
define_bool CONFIG_X86_F00F_WORKS_OK n
fi
if [ "$CONFIG_M586TSC" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_SHIFT 5
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_X86_USE_STRING_486 y
define_bool CONFIG_X86_ALIGNMENT_16 y
define_bool CONFIG_X86_HAS_TSC y
@@ -89,7 +89,7 @@
define_bool CONFIG_X86_F00F_WORKS_OK n
fi
if [ "$CONFIG_M586MMX" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_SHIFT 5
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_X86_USE_STRING_486 y
define_bool CONFIG_X86_ALIGNMENT_16 y
define_bool CONFIG_X86_HAS_TSC y
@@ -98,7 +98,7 @@
define_bool CONFIG_X86_F00F_WORKS_OK n
fi
if [ "$CONFIG_M686" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_SHIFT 5
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_X86_HAS_TSC y
define_bool CONFIG_X86_GOOD_APIC y
bool 'PGE extensions (not for Cyrix/Transmeta)' CONFIG_X86_PGE
@@ -107,7 +107,7 @@
define_bool CONFIG_X86_F00F_WORKS_OK y
fi
if [ "$CONFIG_MPENTIUMIII" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_SHIFT 5
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_X86_HAS_TSC y
define_bool CONFIG_X86_GOOD_APIC y
define_bool CONFIG_X86_PGE y
@@ -123,7 +123,7 @@
define_bool CONFIG_X86_F00F_WORKS_OK y
fi
if [ "$CONFIG_MK6" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_SHIFT 5
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_X86_ALIGNMENT_16 y
define_bool CONFIG_X86_HAS_TSC y
define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
@@ -134,7 +134,7 @@
define_bool CONFIG_MK7 y
fi
if [ "$CONFIG_MK7" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_SHIFT 6
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_X86_HAS_TSC y
define_bool CONFIG_X86_GOOD_APIC y
define_bool CONFIG_X86_USE_3DNOW y
@@ -143,13 +143,13 @@
define_bool CONFIG_X86_F00F_WORKS_OK y
fi
if [ "$CONFIG_MELAN" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_SHIFT 4
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_X86_USE_STRING_486 y
define_bool CONFIG_X86_ALIGNMENT_16 y
define_bool CONFIG_X86_F00F_WORKS_OK y
fi
if [ "$CONFIG_MCYRIXIII" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_SHIFT 5
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_X86_HAS_TSC y
define_bool CONFIG_X86_ALIGNMENT_16 y
define_bool CONFIG_X86_USE_3DNOW y
@@ -157,26 +157,26 @@
define_bool CONFIG_X86_F00F_WORKS_OK y
fi
if [ "$CONFIG_MVIAC3_2" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_SHIFT 5
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_X86_HAS_TSC y
define_bool CONFIG_X86_ALIGNMENT_16 y
define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
define_bool CONFIG_X86_F00F_WORKS_OK y
fi
if [ "$CONFIG_MCRUSOE" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_SHIFT 5
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_X86_HAS_TSC y
define_bool CONFIG_X86_F00F_WORKS_OK y
fi
if [ "$CONFIG_MWINCHIPC6" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_SHIFT 5
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_X86_ALIGNMENT_16 y
define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
define_bool CONFIG_X86_OOSTORE y
define_bool CONFIG_X86_F00F_WORKS_OK y
fi
if [ "$CONFIG_MWINCHIP2" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_SHIFT 5
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_X86_ALIGNMENT_16 y
define_bool CONFIG_X86_HAS_TSC y
define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
@@ -184,7 +184,7 @@
define_bool CONFIG_X86_F00F_WORKS_OK y
fi
if [ "$CONFIG_MWINCHIP3D" = "y" ]; then
- define_int CONFIG_X86_L1_CACHE_SHIFT 5
+ define_int CONFIG_X86_L1_CACHE_SHIFT 7
define_bool CONFIG_X86_ALIGNMENT_16 y
define_bool CONFIG_X86_HAS_TSC y
define_bool CONFIG_X86_USE_PPRO_CHECKSUM y

2003-09-07 18:39:43

by peter_daum

[permalink] [raw]
Subject: Re: 2.4.22 with CONFIG_M686: networking broken

Hi Adrian,

Your patch did the trick!
(Since this looks like a pretty general issue, I guess, that
means that there were some more problems besides the
networking-stuff that I stumbled across?)

Thanks a bunch,
Peter

On Sun, 7 Sep 2003, Adrian Bunk wrote:

> On Wed, Sep 03, 2003 at 01:08:08PM +0200, Peter Daum wrote:

> > It seems, like kernel version 2.4.22 introduced some weird bug,
> > that causes all kinds of network malfunctions, when the kernel is
> > compiled with "CONFIG_M686".
> >...
> could you check whether the patch below fixes your problems?
...
> --- linux-2.4.23-pre3-full/arch/i386/config.in.old 2003-09-07 17:10:31.000000000 +0200
> +++ linux-2.4.23-pre3-full/arch/i386/config.in 2003-09-07 17:11:47.000000000 +0200
> @@ -51,7 +51,7 @@
> if [ "$CONFIG_M386" = "y" ]; then
> define_bool CONFIG_X86_CMPXCHG n
> define_bool CONFIG_X86_XADD n
> - define_int CONFIG_X86_L1_CACHE_SHIFT 4
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_RWSEM_GENERIC_SPINLOCK y
> define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM n
> define_bool CONFIG_X86_PPRO_FENCE y
> @@ -67,21 +67,21 @@
> define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM y
> fi
> if [ "$CONFIG_M486" = "y" ]; then
> - define_int CONFIG_X86_L1_CACHE_SHIFT 4
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_X86_USE_STRING_486 y
> define_bool CONFIG_X86_ALIGNMENT_16 y
> define_bool CONFIG_X86_PPRO_FENCE y
> define_bool CONFIG_X86_F00F_WORKS_OK n
> fi
> if [ "$CONFIG_M586" = "y" ]; then
> - define_int CONFIG_X86_L1_CACHE_SHIFT 5
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_X86_USE_STRING_486 y
> define_bool CONFIG_X86_ALIGNMENT_16 y
> define_bool CONFIG_X86_PPRO_FENCE y
> define_bool CONFIG_X86_F00F_WORKS_OK n
> fi
> if [ "$CONFIG_M586TSC" = "y" ]; then
> - define_int CONFIG_X86_L1_CACHE_SHIFT 5
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_X86_USE_STRING_486 y
> define_bool CONFIG_X86_ALIGNMENT_16 y
> define_bool CONFIG_X86_HAS_TSC y
> @@ -89,7 +89,7 @@
> define_bool CONFIG_X86_F00F_WORKS_OK n
> fi
> if [ "$CONFIG_M586MMX" = "y" ]; then
> - define_int CONFIG_X86_L1_CACHE_SHIFT 5
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_X86_USE_STRING_486 y
> define_bool CONFIG_X86_ALIGNMENT_16 y
> define_bool CONFIG_X86_HAS_TSC y
> @@ -98,7 +98,7 @@
> define_bool CONFIG_X86_F00F_WORKS_OK n
> fi
> if [ "$CONFIG_M686" = "y" ]; then
> - define_int CONFIG_X86_L1_CACHE_SHIFT 5
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_X86_HAS_TSC y
> define_bool CONFIG_X86_GOOD_APIC y
> bool 'PGE extensions (not for Cyrix/Transmeta)' CONFIG_X86_PGE
> @@ -107,7 +107,7 @@
> define_bool CONFIG_X86_F00F_WORKS_OK y
> fi
> if [ "$CONFIG_MPENTIUMIII" = "y" ]; then
> - define_int CONFIG_X86_L1_CACHE_SHIFT 5
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_X86_HAS_TSC y
> define_bool CONFIG_X86_GOOD_APIC y
> define_bool CONFIG_X86_PGE y
> @@ -123,7 +123,7 @@
> define_bool CONFIG_X86_F00F_WORKS_OK y
> fi
> if [ "$CONFIG_MK6" = "y" ]; then
> - define_int CONFIG_X86_L1_CACHE_SHIFT 5
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_X86_ALIGNMENT_16 y
> define_bool CONFIG_X86_HAS_TSC y
> define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
> @@ -134,7 +134,7 @@
> define_bool CONFIG_MK7 y
> fi
> if [ "$CONFIG_MK7" = "y" ]; then
> - define_int CONFIG_X86_L1_CACHE_SHIFT 6
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_X86_HAS_TSC y
> define_bool CONFIG_X86_GOOD_APIC y
> define_bool CONFIG_X86_USE_3DNOW y
> @@ -143,13 +143,13 @@
> define_bool CONFIG_X86_F00F_WORKS_OK y
> fi
> if [ "$CONFIG_MELAN" = "y" ]; then
> - define_int CONFIG_X86_L1_CACHE_SHIFT 4
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_X86_USE_STRING_486 y
> define_bool CONFIG_X86_ALIGNMENT_16 y
> define_bool CONFIG_X86_F00F_WORKS_OK y
> fi
> if [ "$CONFIG_MCYRIXIII" = "y" ]; then
> - define_int CONFIG_X86_L1_CACHE_SHIFT 5
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_X86_HAS_TSC y
> define_bool CONFIG_X86_ALIGNMENT_16 y
> define_bool CONFIG_X86_USE_3DNOW y
> @@ -157,26 +157,26 @@
> define_bool CONFIG_X86_F00F_WORKS_OK y
> fi
> if [ "$CONFIG_MVIAC3_2" = "y" ]; then
> - define_int CONFIG_X86_L1_CACHE_SHIFT 5
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_X86_HAS_TSC y
> define_bool CONFIG_X86_ALIGNMENT_16 y
> define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
> define_bool CONFIG_X86_F00F_WORKS_OK y
> fi
> if [ "$CONFIG_MCRUSOE" = "y" ]; then
> - define_int CONFIG_X86_L1_CACHE_SHIFT 5
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_X86_HAS_TSC y
> define_bool CONFIG_X86_F00F_WORKS_OK y
> fi
> if [ "$CONFIG_MWINCHIPC6" = "y" ]; then
> - define_int CONFIG_X86_L1_CACHE_SHIFT 5
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_X86_ALIGNMENT_16 y
> define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
> define_bool CONFIG_X86_OOSTORE y
> define_bool CONFIG_X86_F00F_WORKS_OK y
> fi
> if [ "$CONFIG_MWINCHIP2" = "y" ]; then
> - define_int CONFIG_X86_L1_CACHE_SHIFT 5
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_X86_ALIGNMENT_16 y
> define_bool CONFIG_X86_HAS_TSC y
> define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
> @@ -184,7 +184,7 @@
> define_bool CONFIG_X86_F00F_WORKS_OK y
> fi
> if [ "$CONFIG_MWINCHIP3D" = "y" ]; then
> - define_int CONFIG_X86_L1_CACHE_SHIFT 5
> + define_int CONFIG_X86_L1_CACHE_SHIFT 7
> define_bool CONFIG_X86_ALIGNMENT_16 y
> define_bool CONFIG_X86_HAS_TSC y
> define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
>

2003-09-07 19:42:22

by Adrian Bunk

[permalink] [raw]
Subject: Re: 2.4.22 with CONFIG_M686: networking broken

On Sun, Sep 07, 2003 at 08:38:57PM +0200, Peter Daum wrote:

> Hi Adrian,

Hi Peter,

> Your patch did the trick!

thanks for your report!

Your thoroughly problem description ad testing was the reason why I was
able to think about this possible reason.

> (Since this looks like a pretty general issue, I guess, that
> means that there were some more problems besides the
> networking-stuff that I stumbled across?)

It's a pretty general issue and althought whatever triggered it for you
was introduced in 2.4.22, it isn't new.

I'll send a slightly different patch for inclusion in 2.4.23.

> Thanks a bunch,
> Peter

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed