lkml.org 
[lkml]   [1998]   [May]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectLinux-2.0.34pre15: ISDN patch and test results
Hi Alan,

Alan Cox wrote:
>
> At least one reason this can occur is that the ISDN net layer when it
> fails to dial appears to call icmp_send() to send an error reply without
> checking if the packet it is erroring happens to be IP. 99% of the time
> that will send crap, 1% it'll blow up.
>

It seems your guess was right :-)

In 2.0.34pre15 I changed function isdn_net_unreachable from isdn_net.c
to the following:

static void
isdn_net_unreachable(struct device *dev, struct sk_buff *skb, char
*reason)
{
/* We must only icmp IP packets. Non IP protocols have no
'Im sorry we are down right now' messages */
if(skb->protocol==htons(ETH_P_IP)) {
printk(KERN_DEBUG "isdn_net: %s: %s, send ICMP\n",
dev->name, reason);
icmp_send(skb, ICMP_DEST_UNREACH, ICMP_HOST_UNREACH, 0
#if (LINUX_VERSION_CODE < 0x02010f) /* 2.1.15 */
,dev
#endif
);
} else
printk(KERN_DEBUG "isdn_net: cannot send ICMP for non-IP packet
(protocol=%#4.4x)\n",
(int)ntohs(skb->protocol));
}


After rebootimg, the system didn't crash like it did before, and I
found the
following syslog entries:
[...]
May 21 17:29:59 kafka kernel: HiSax: debugging flags card 1 set to 1f
May 21 17:30:00 kafka kernel: HiSax: debugging flags card 1 set to 1f
May 21 17:30:01 kafka kernel: isdn_net: cannot send ICMP for non-IP
packet (protocol=0x0000)
May 21 17:30:07 kafka last message repeated 3 times
May 21 17:30:07 kafka kernel: isdn_net: isdn0: No phone number, send
ICMP
May 21 17:30:08 kafka kernel: isdn_net: isdn0: No phone number, send
ICMP
May 21 17:30:09 kafka kernel: isdn_net: cannot send ICMP for non-IP
packet (protocol=0x0000)
May 21 17:30:09 kafka kernel: isdn_net: isdn0: No phone number, send
ICMP
May 21 17:30:10 kafka kernel: isdn_net: isdn0: No phone number, send
ICMP
May 21 17:30:11 kafka kernel: isdn_net: cannot send ICMP for non-IP
packet (protocol=0x0000)
May 21 17:30:11 kafka kernel: isdn_net: isdn0: No phone number, send
ICMP
May 21 17:30:12 kafka kernel: isdn_net: isdn0: No phone number, send
ICMP
May 21 17:30:13 kafka kernel: isdn_net: cannot send ICMP for non-IP
packet (protocol=0x0000)
May 21 17:30:13 kafka kernel: isdn_net: isdn0: No phone number, send
ICMP
May 21 17:30:15 kafka kernel: isdn_net: cannot send ICMP for non-IP
packet (protocol=0x0000)
May 21 17:30:47 kafka last message repeated 16 times
May 21 17:31:49 kafka last message repeated 31 times
May 21 17:32:51 kafka last message repeated 31 times
[...]

It seems, the ISDN driver doesn't care about skb protocol type when
sending
ICMP messages...

I will submit a bug report to the isdn4linux people. I'm not sure what
the
current status of isdn4linux for Linux-2.0 is. The version included in
your
2.0.34pre patches (HiSax Version 2.1) seems outdated: The current
drivers
for Linux-2.0 from the CVS tree have HiSax Version 2.9. I think it's
too late
to include this new driver, but maybe you could add just the small
patch to
prevent 2.0.34 from crashing?

I'll try HiSax Version 2.9 next...

- andreas

PS: I'm currently stress-testing 2.0.34pre15 (+raid145 patches) on my
test-machines (you remember the setup?): so far it looks very good!

Look at the stats for the communication-server test-system (machine 3)
and smile:

root@duras {529} # uptime
5:51pm up 1 day, 20:08, 4 users, load average: 4.90, 3.88, 3.42

root@duras {530} # cat /proc/stat
cpu 3385872 6783351 5357856 362403
disk 468733 662711 662273 664361
disk_rio 370868 438420 435498 436460
disk_wio 97865 224291 226775 227901
disk_rblk 1276216 876894 871050 872974
disk_wblk 198040 448588 453556 455808
page 31091097 21610432
swap 89229 588
intr 187225660 15889482 708 0 0 0 0 0 0 2 167540552 1821445 1973470 0
1 0 0
ctxt 223109651
btime 895607001
processes 1379148

root@duras {531} # netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP
TX-OVR Flags
lo 3584 0 40118684 0 0 0 40118684 0
0 0 BLRU
eth0 1500 0 107347102 0 0 0 95378399 2
0 0 BRU

root@duras {532} # cat /proc/scsi/aic7xxx/0
Adaptec AIC7xxx driver version: 5.0.15/3.2.4
Compile Options:
AIC7XXX_RESET_DELAY : 3
AIC7XXX_TAGGED_QUEUEING: Adapter Support Enabled
Check below to see which
devices use tagged queueing
AIC7XXX_PAGE_ENABLE : Enabled (This is no longer an option)
AIC7XXX_PROC_STATS : Enabled

Adapter Configuration:
SCSI Adapter: Adaptec AHA-294X Ultra SCSI host adapter
Ultra Wide Controller
Programmed I/O Base: d400
Adaptec SCSI BIOS: Enabled
IRQ: 10
SCBs: Active 0, Max Active 4,
Allocated 30, HW 16, Page 255
Interrupts: 1821798
BIOS Control Word: 0x18a6
Adapter Control Word: 0x005f
Extended Translation: Enabled
SCSI Bus Reset: Enabled
Disconnect Enable Flags: 0xffff
Ultra Enable Flags: 0xffef
Tag Queue Enable Flags: 0x0000
Ordered Queue Tag Flags: 0x0000
Default Tag Queue Depth: 30
Tagged Queue By Device array for aic7xxx host instance 0:

{255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}
Actual queue depth per device for aic7xxx host instance 0:
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}

Statistics:
(scsi0:0:0:0)
nxfers 464555 (369310 read;95245 written)
blks(512) rd=5643661; blks(512) wr=443054
< 512 512-1K 1-2K 2-4K 4-8K 8-16K 16-32K 32-64K 64-128K
>128K
Reads: 0 1 116327 45167 129931 49429 10058 10020
8377 0
Writes: 0 0 83239 7558 2342 655 539 205
707 0

(scsi0:0:4:0)
nxfers 49034 (49034 read;0 written)
blks(512) rd=2055097; blks(512) wr=0
< 512 512-1K 1-2K 2-4K 4-8K 8-16K 16-32K 32-64K 64-128K
>128K
Reads: 0 1 0 12770 15461 1695 10586 3742
4779 0
Writes: 0 0 0 0 0 0 0 0
0 0

(scsi0:0:8:0)
nxfers 660562 (437959 read;222603 written)
blks(512) rd=11014253; blks(512) wr=8554784
< 512 512-1K 1-2K 2-4K 4-8K 8-16K 16-32K 32-64K 64-128K
>128K
Reads: 0 1 140334 46280 59685 62770 45740 72390
10759 0
Writes: 0 0 86962 28315 18546 17955 22650 24181
23994 0

(scsi0:0:9:0)
nxfers 660145 (435039 read;225106 written)
blks(512) rd=11006777; blks(512) wr=8559248
< 512 512-1K 1-2K 2-4K 4-8K 8-16K 16-32K 32-64K 64-128K
>128K
Reads: 0 1 138260 46059 58747 62885 45880 72627
10580 0
Writes: 0 0 86836 30656 18887 17817 22867 24100
23943 0

root@duras {533} # cat /proc/scsi/aic7xxx/1
Adaptec AIC7xxx driver version: 5.0.15/3.2.4
Compile Options:
AIC7XXX_RESET_DELAY : 3
AIC7XXX_TAGGED_QUEUEING: Adapter Support Enabled
Check below to see which
devices use tagged queueing
AIC7XXX_PAGE_ENABLE : Enabled (This is no longer an option)
AIC7XXX_PROC_STATS : Enabled

Adapter Configuration:
SCSI Adapter: Adaptec AHA-294X Ultra SCSI host adapter
Ultra Wide Controller
Programmed I/O Base: d000
Adaptec SCSI BIOS: Enabled
IRQ: 11
SCBs: Active 0, Max Active 3,
Allocated 30, HW 16, Page 255
Interrupts: 1973470
BIOS Control Word: 0x18a6
Adapter Control Word: 0x005e
Extended Translation: Enabled
SCSI Bus Reset: Enabled
Disconnect Enable Flags: 0xffff
Ultra Enable Flags: 0xffff
Tag Queue Enable Flags: 0x0000
Ordered Queue Tag Flags: 0x0000
Default Tag Queue Depth: 30
Tagged Queue By Device array for aic7xxx host instance 1:

{255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}
Actual queue depth per device for aic7xxx host instance 1:
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}

Statistics:
(scsi1:0:8:0)
nxfers 662298 (436060 read;226238 written)
blks(512) rd=11010483; blks(512) wr=8558982
< 512 512-1K 1-2K 2-4K 4-8K 8-16K 16-32K 32-64K 64-128K
>128K
Reads: 0 1 138210 47344 58550 62879 45900 72490
10686 0
Writes: 0 0 87716 30609 19350 17853 22669 24094
23947 0

(scsi1:0:9:0)
nxfers 660908 (434172 read;226736 written)
blks(512) rd=11001755; blks(512) wr=8548498
< 512 512-1K 1-2K 2-4K 4-8K 8-16K 16-32K 32-64K 64-128K
>128K
Reads: 0 1 136582 46819 59472 62222 45736 72744
10596 0
Writes: 0 0 86217 32347 19987 17693 22558 24017
23917 0

(scsi1:0:10:0)
nxfers 658639 (437647 read;220992 written)
blks(512) rd=11009455; blks(512) wr=8559930
< 512 512-1K 1-2K 2-4K 4-8K 8-16K 16-32K 32-64K 64-128K
>128K
Reads: 0 1 139152 46845 59985 62914 45284 72967
10499 0
Writes: 0 0 87657 26505 18305 17448 22739 24239
24099 0


--
Andreas Haumer | email: andreas@xss.co.at | PGP key available
*x Software + Systeme | phone: +43.1.6001508 | on request.
Buchengasse 67/8 | +43.664.3004449 |
A-1100 Vienna, Austria | fax: +43.1.6001507 |

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu

\
 
 \ /
  Last update: 2005-03-22 13:42    [W:0.026 / U:0.092 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site