multiple protocols over Ethernet?

From: Romain Kang (romain@icp.siemens.com)
Date: Fri Jun 23 2000 - 18:40:25 EST


We are using the 2.2.12 kernel with kdb added from SGI's
kdb-v0.5-2.2.10. We suspect that there is conflict when more than
protocol plugs into the same network driver.

We have a loadable module which plugs into the network driver to use
the network interfaces:
                on->proto.type = protocol_type;
                on->proto.dev = dev; // 3com for the panic below
                on->proto.func = OSD_NET_input;
                on->proto.data = (void *)on;
                dev_add_pack(&on->proto);
The hardware configuration we are using has 2 3com (3c59x) and one
Intel EEPRO100 NICs.

Several times while our module was plugged into the network drivers,
we ran multiple ttcp copies, e.g.,
        ttcp -s -u -l32 -p 2000 -n 65536 -t dest-host
with a corresponding receiver on the other side. We encountered a
panic which is shown below through kdb outputs.

Does anyone have suggestions how we can solve this problem, or ideas
how to register multiple protocols with a driver? (We looked briefly
at the IPX and Appletalk interfaces, but they appeared to use an older
version of the skb interface).

[3]kdb> rd
eax = 0xddfcc2c0 ebx = 0x00000001 ecx = 0xde0c1330 edx = 0x00000000
esi = 0xde0c12c0 edi = 0xde0c10a0 esp = 0xde0c12c0 eip = 0xc015b98f
ebp = 0xddee1d84 ss = 0xde0c12c0 cs = 0x00000010 eflags = 0x00010297
 ds = 0xc0170018 es = 0x00000018 origeax = 0xffffffff &regs = 0xddee1d48
[3]kdb> bt
    EBP EIP Function(args)
0xddee1d84 0xc015b98f pfifo_fast_dequeue+0x23( 0xde0c12c0)
0xddee1d9c 0xc015b785 qdisc_restart+0x15( 0xde0c10a0)
0xddee1db0 0xc0156e45 dev_queue_xmit+0x3d( 0xdd2ed4e0)
0xddee1dc8 0xc01679cd ip_output+0x85( 0xdd2ed4e0)
0xddee1df0 0xc016845b ip_build_xmit+0x2b3( 0xde1d8470, 0xc01744e4, 0xddee1e30, 0x28, 0xddee1e48)
0xddee1e54 0xc0174902 udp_sendmsg+0x31e( 0xde1d8470, 0xddee1ee4, 0x20)
0xddee1e70 0xc01791bd inet_sendmsg+0x81( 0xde1b63cc, 0xddee1ee4, 0x20, 0xddee1ea0)
0xddee1eb4 0xc01529a8 sock_sendmsg+0x7c( 0xde1b63cc, 0xddee1ee4, 0x20)
0xddee1f80 0xc0153583 sys_sendto+0xe3( 0x3, 0x8050000, 0x20, 0x0, 0x804bf68)
0xddee1fbc 0xc0153e57 sys_socketcall+0xff( 0xb, 0xbffffad0, 0x804cf80, 0x8050000, 0x20)
0xbffffb08 0xc010a020 system_call

[3]kdb> cpu 0
Oops: 0002
Entering kdb CPU: 3
EIP: 0010:[<c015b98f>]
EFLAGS: 00010297
on processor 0 eax: ddfcc2c0 ebx: 00000001 ecx: de0c1330 edx: 00000000
due to cpu switch
esi: de0c12c0 edi: de0c10a0 ebp: ddee1d84 esp: ddee1d84
[0]kdb> ds: 0018 es: 0018 ss: 0018
Process ttcp (pid: 1217, process nr: 58, stackpage=ddee1000)
Stack: ddee1d9c c015b785 de0c12c0 de0c10a0 de0c12c0 de0c10a0 ddee1db0 c0156e45
       de0c10a0 dffd0e50 dd2ed4e0 ddee1dc8 c01679cd dd2ed4e0 de3782f4 de3782f0
       00000028 ddee1df0 c016845b dd2ed4e0 fffffff3 00000000 de1d8470 ddee1df8
Call Trace: [<c015b785>] [<c0156e45>] [<c01679cd>] [<c016845b>] [<c0174902>] [<c01744e4>] [<c017913c>]
       [<c01791bd>] [<c01529a8>] [<c0153583>] [<c01655aa>] [<c015b785>] [<c015b809>] [<c0153e57>] [<c010a020>]
       [<c010002b>]
Code: 89 4a 04 89 11 c7 00 00 00 00 00 c7 40 04 00 00 00 00 c7 40

[0]kdb> bt
    EBP EIP Function(args)
0xdfffbfb4 0xc010876d cpu_idle+0x45( 0x0)
0xdfffbfc0 0xc02985c0 ttyp_termios_locked+0x340)
0xdfffb3e4 0x1100 ttyp_termios_locked+0x3fd68e80( 0x0, 0x0, 0x0)
0xdfffb3f8 0xc0294b25 drive_params+0x2a5( 0x0, 0x0, 0x0, 0x0, 0x0)
0x0 0xc01001b1 L6
[0]kdb> cpu 1
Entering kdb on processor 1 due to cpu switch
[1]kdb> bt
    EBP EIP Function(args)
0xdf34ddec 0xc01e895d stext_lock+0x5d1( )
0xdf34de14 0xc0155aec skb_recv_datagram+0x10c( 0xdebe94b0, 0x0, 0x0, 0xdf34de38)
0xdf34de3c 0xc01749f4 udp_recvmsg+0x44( 0xdebe94b0, 0xdf34df64, 0x20, 0x0, 0x0)
0xdf34de6c 0xc0179125 inet_recvmsg+0x6d( 0xde673d4c, 0xdf34df64, 0x20, 0x0, 0xdf34de9c)
0xdf34deb0 0xc01529ff sock_recvmsg+0x37( 0xde673d4c, 0xdf34df64, 0x20, 0x0)
0xdf34df80 0xc0153680 sys_recvfrom+0xa8( 0x3, 0x8050000, 0x20, 0x0, 0xbffffd48)
0xdf34dfbc 0xc0153e83 sys_socketcall+0x12b( 0xc, 0xbffffd10, 0x3, 0x8050000, 0xbffffdf4)
0xbffffd58 0xc010a020 system_call
[1]kdb> cpu 2
Entering kdb on processor 2 due to cpu switch
[2]kdb> bt
    EBP EIP Function(args)
0xdfff1fb4 0xc010876d cpu_idle+0x45( 0x0)
0xdfff1fc0 0xc02985c0 ttyp_termios_locked+0x340)
0xdfff13e4 0x1100 ttyp_termios_locked+0x3fd68e80( 0x0, 0x0, 0x0)
0xdfff13f8 0xc0294b25 drive_params+0x2a5( 0x0, 0x0, 0x0, 0x0, 0x0)
0x0 0xc01001b1 L6
[3]kdb> reboot
disabling symmetric IO mode... ...done.

LILO
smp linux for symetric multi processor
smp-org linux for symetric multi processor (from CD)
smp-kdb linux for symetric multi processor (kdb)
smp-ikd linux for symetric multi processor (ikd)
up linux for uni processor
up-org linux for uni processor (from CD)
boot:
Loading linux-smp-kdb......................
Linux version 2.2.12-20smp-kdb (root@hendrix) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) #2 SMP Fri May 12 17:29:43 PDT 2000
Intel MultiProcessor Specification v1.4
    Virtual Wire compatibility mode.
OEM ID: SIEMENS Product ID: PRIMERGY 870 APIC at: 0xFEE00000
Processor #3 Pentium(tm) Pro APIC version 17
Processor #0 Pentium(tm) Pro APIC version 17
Processor #1 Pentium(tm) Pro APIC version 17
Processor #2 Pentium(tm) Pro APIC version 17
I/O APIC #4 Version 17 at 0xFEC00000.
Processors: 4
mapped APIC to ffffe000 (fee00000)
mapped IOAPIC to ffffd000 (fec00000)
Detected 400011445 Hz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 398.95 BogoMIPS
Memory: 516420k/524288k available (1148k kernel code, 420k reserved, 5844k data, 76k init)
kdb version 0.5 by Scott Lurndal. Copyright SGI, All Rights Reserved
DENTRY hash table entries: 262144 (order: 9, 2097152 bytes)
Buffer-cache hash table entries: 524288 (order: 9, 2097152 bytes)
Page-cache hash table entries: 131072 (order: 7, 524288 bytes)
VFS: Diskquotas version dquot_6.4.0 initialized
Checking 386/387 coupling... OK, FPU using exception 16 error reporting.
Checking 'hlt' instruction... OK.
Checking for popad bug... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.35a (19990819) Richard Gooch (rgooch@atnf.csiro.au)
per-CPU timeslice cutoff: 200.00 usecs.
CPU3: Intel Pentium II (Deschutes) stepping 03
calibrating APIC timer ...
..... CPU clock speed is 399.9902 MHz.
..... system bus clock speed is 99.9974 MHz.
Booting processor 0 eip 2000
Calibrating delay loop... 399.77 BogoMIPS
OK.
CPU0: Intel Pentium II (Deschutes) stepping 03
Booting processor 1 eip 2000
Calibrating delay loop... 399.77 BogoMIPS
OK.
CPU1: Intel Pentium II (Deschutes) stepping 03
Booting processor 2 eip 2000
Calibrating delay loop... 399.77 BogoMIPS
OK.
CPU2: Intel Pentium II (Deschutes) stepping 03
Total of 4 processors activated (1598.26 BogoMIPS).
enabling symmetric IO mode... ...done.
ENABLING IO-APIC IRQs
init IO_APIC IRQs
 IO-APIC (apicid-pin) 4-0, 4-10, 4-11, 4-14, 4-15, 4-16, 4-17, 4-18, 4-20 not connected.
number of MP IRQ sources: 24.
number of IO-APIC #4 registers: 32.
testing the IO APIC.......................

IO APIC #4......
.... register #00: 04000000
....... : physical APIC id: 04
.... register #01: 001F0011
....... : max redirection entries: 001F
....... : IO APIC version: 0011
.... register #02: 00000000
....... : arbitration: 00
.... IRQ redirection table:
 NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:
 00 000 00 1 0 0 0 0 0 0 00
 01 000 00 0 0 0 0 0 1 1 59
 02 0FF 0F 0 0 0 0 0 1 1 51
 03 000 00 0 0 0 0 0 1 1 61
 04 000 00 0 0 0 0 0 1 1 69
 05 000 00 0 0 0 0 0 1 1 71
 06 000 00 0 0 0 0 0 1 1 79
 07 000 00 0 0 0 0 0 1 1 81
 08 000 00 0 0 0 0 0 1 1 89
 09 000 00 0 0 0 0 0 1 1 91
 0a 000 00 1 0 0 0 0 0 0 00
 0b 000 00 1 0 0 0 0 0 0 00
 0c 000 00 0 0 0 0 0 1 1 99
 0d 000 00 1 0 0 0 0 0 0 00
 0e 000 00 1 0 0 0 0 0 0 00
 0f 000 00 1 0 0 0 0 0 0 00
 10 000 00 1 0 0 0 0 0 0 00
 11 000 00 1 0 0 0 0 0 0 00
 12 000 00 1 0 0 0 0 0 0 00
 13 0FF 0F 1 1 0 1 0 1 1 A1
 14 000 00 1 0 0 0 0 0 0 00
 15 0FF 0F 1 1 0 1 0 1 1 A9
 16 0FF 0F 1 1 0 1 0 1 1 B1
 17 0FF 0F 1 1 0 1 0 1 1 B9
 18 0FF 0F 1 1 0 1 0 1 1 C1
 19 0FF 0F 1 1 0 1 0 1 1 C9
 1a 0FF 0F 1 1 0 1 0 1 1 D1
 1b 0FF 0F 1 1 0 1 0 1 1 D9
 1c 0FF 0F 1 1 0 1 0 1 1 E1
 1d 0FF 0F 1 1 0 1 0 1 1 E9
 1e 0FF 0F 1 1 0 1 0 1 1 F1
 1f 0FF 0F 1 1 0 1 0 1 1 F9
.................................... done.
PCI: PCI BIOS revision 2.10 entry at 0xfdad3
PCI: Using configuration type 1
PCI: Probing PCI hardware
PCI: 00:80 [8086/84ca]: Scanning peer host bridges
PCI->APIC IRQ transform: (B0,I2,P3) -> 19
PCI->APIC IRQ transform: (B0,I5,P0) -> 28
PCI->APIC IRQ transform: (B2,I13,P0) -> 23
PCI->APIC IRQ transform: (B2,I14,P0) -> 22
PCI->APIC IRQ transform: (B2,I15,P0) -> 21
PCI->APIC IRQ transform: (B4,I12,P0) -> 24
PCI->APIC IRQ transform: (B4,I13,P0) -> 27
PCI->APIC IRQ transform: (B4,I14,P0) -> 26
PCI->APIC IRQ transform: (B4,I15,P0) -> 25
PCI->APIC IRQ transform: (B1,I1,P0) -> 29
PCI->APIC IRQ transform: (B1,I2,P0) -> 30
PCI->APIC IRQ transform: (B1,I3,P0) -> 31
Linux NET4.0 for Linux 2.2
Based upon Swansea University Computer Society NET3.039
NET4: Unix domain sockets 1.0 for Linux NET4.0.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
TCP: Hash tables configured (ehash 524288 bhash 65536)
Initializing RT netlink socket
Starting kswapd v 1.5
Detected PS/2 Mouse Port.
Serial driver version 4.27 with MANY_PORTS MULTIPORT SHARE_IRQ enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
ttyS02 at 0x03e8 (irq = 4) is a 16550A
ttyS03 at 0x02e8 (irq = 3) is a 16550A
pty: 256 Unix98 ptys configured
apm: BIOS not found.
Real Time Clock Driver v1.09
RAM disk driver initialized: 16 RAM disks of 4096K size
PIIX4: IDE controller on PCI bus 00 dev 11
PIIX4: device not capable of full native PCI mode
PIIX4: device disabled (BIOS)
ide2: ports already in use, skipping probe
ide2: ports already in use, skipping probe
ide2: ports already in use, skipping probe
Floppy drive(s): fd0 is 1.44M
FDC 0 is a National Semiconductor PC87306
md driver 0.90.0 MAX_MD_DEVS=256, MAX_REAL=12
raid5: measuring checksumming speed
raid5: MMX detected, trying high-speed MMX checksum routines
   pII_mmx : 892.683 MB/sec
   p5_mmx : 931.926 MB/sec
   8regs : 605.028 MB/sec
   32regs : 424.053 MB/sec
using fastest function: p5_mmx (931.926 MB/sec)
scsi : 0 hosts.
scsi : detected total.
md.c: sizeof(mdp_super_t) = 4096
Partition check:
RAMDISK: Compressed image found at block 0
autodetecting RAID arrays
autorun ...
... autorun DONE.
VFS: Mounted root (ext2 filesystem).
ncr53c8xx: at PCI bus 1, device 2, function 0
ncr53c8xx: 53c875E detected with Symbios NVRAM
ncr53c8xx: at PCI bus 1, device 3, function 0
ncr53c8xx: 53c875E detected with Symbios NVRAM
ncr53c875E-0: rev=0x26, base=0xf2202000, io_port=0x3000, irq=30
ncr53c875E-0: Symbios format NVRAM, ID 7, Fast-20, Parity Checking
ncr53c875E-0: initial SCNTL3/DMODE/DCNTL/CTEST3/4/5 = (hex) 05/4e/80/01/00/24
ncr53c875E-0: final SCNTL3/DMODE/DCNTL/CTEST3/4/5 = (hex) 05/46/a0/00/08/24
ncr53c875E-0: on-chip RAM at 0xf2200000
ncr53c875E-0: resetting, command processing suspended for 2 seconds
ncr53c875E-0: restart (scsi reset).
ncr53c875E-0: enabling clock multiplier
ncr53c875E-0: Downloading SCSI SCRIPTS.
ncr53c875E-1: rev=0x26, base=0xf2202400, io_port=0x3400, irq=31
ncr53c875E-1: Symbios format NVRAM, ID 7, Fast-20, Parity Checking
ncr53c875E-1: initial SCNTL3/DMODE/DCNTL/CTEST3/4/5 = (hex) 05/4e/80/01/00/24
ncr53c875E-1: final SCNTL3/DMODE/DCNTL/CTEST3/4/5 = (hex) 05/46/a0/00/08/24
ncr53c875E-1: on-chip RAM at 0xf2201000
ncr53c875E-1: resetting, command processing suspended for 2 seconds
ncr53c875E-1: restart (scsi reset).
ncr53c875E-1: enabling clock multiplier
ncr53c875E-1: Downloading SCSI SCRIPTS.
scsi0 : ncr53c8xx - version 3.2a-2
scsi1 : ncr53c8xx - version 3.2a-2
scsi : 2 hosts.

--
Romain Kang             Siemens Info/Comm Products, San Jose R&D
romain@icp.siemens.com  formerly Pyramid Technology Corporation

Disclaimer: I represent myself alone, except where otherwise indicated.

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Jun 23 2000 - 21:00:27 EST