kayws426 / embox

Automatically exported from code.google.com/p/embox
0 stars 1 forks source link

embox don't respond to host's packet after start #681

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1.r12745. x86/nonvga_debug
2.turn on NET_RX_DEBUG flag in net/l0/net_rx.c
3.remove broken file system tests
@Runlevel(1) include embox.test.fs.filesystem_test
@Runlevel(1) include embox.test.fs.file_test
3.run embox and try to ping it from host
$ ./scripts/qemu/auto_qemu
4.try to ping it from host
What is the expected output? What do you see instead?
HOST:
$ ping 10.0.2.16
PING 10.0.2.16 (10.0.2.16) 56(84) bytes of data.
From 10.0.2.10 icmp_seq=1 Destination Host Unreachable
From 10.0.2.10 icmp_seq=2 Destination Host Unreachable
From 10.0.2.10 icmp_seq=3 Destination Host Unreachable
From 10.0.2.10 icmp_seq=4 Destination Host Unreachable
From 10.0.2.10 icmp_seq=5 Destination Host Unreachable
From 10.0.2.10 icmp_seq=6 Destination Host Unreachable
From 10.0.2.10 icmp_seq=7 Destination Host Unreachable
From 10.0.2.10 icmp_seq=8 Destination Host Unreachable
From 10.0.2.10 icmp_seq=9 Destination Host Unreachable

On Embox nothing happens (except timer ticks)
EMBOX:
> export PWD=/ 
> export HOME=/ 
root@embox:/#

------------------------------------------------------------
But if you press something in qemu window Embox immediately send packets in 
response to all requests
HOST:
$ ping 10.0.2.16
PING 10.0.2.16 (10.0.2.16) 56(84) bytes of data.
From 10.0.2.10 icmp_seq=1 Destination Host Unreachable
From 10.0.2.10 icmp_seq=2 Destination Host Unreachable
From 10.0.2.10 icmp_seq=3 Destination Host Unreachable
From 10.0.2.10 icmp_seq=4 Destination Host Unreachable
From 10.0.2.10 icmp_seq=5 Destination Host Unreachable
From 10.0.2.10 icmp_seq=6 Destination Host Unreachable
From 10.0.2.10 icmp_seq=7 Destination Host Unreachable
From 10.0.2.10 icmp_seq=8 Destination Host Unreachable
From 10.0.2.10 icmp_seq=9 Destination Host Unreachable
64 bytes from 10.0.2.16: icmp_seq=10 ttl=64 time=486 ms
64 bytes from 10.0.2.16: icmp_seq=11 ttl=64 time=1.17 ms
64 bytes from 10.0.2.16: icmp_seq=12 ttl=64 time=1.17 ms
^C
--- 10.0.2.16 ping statistics ---
12 packets transmitted, 3 received, +9 errors, 75% packet loss, time 11049ms

EMBOX:
> export PWD=/ 
> export HOME=/ 
root@embox:/#net_rx: 0x00ba4c78 len 54 type 0x0800
net_rx: 0x00ba4d30 unknown type 0x86dd
net_rx: 0x00ba4c1c unknown type 0x86dd
net_rx: 0x00ba4cd4 unknown type 0x86dd
net_rx: 0x00ba4bc0 unknown type 0x86dd
net_rx: 0x00ba4d8c unknown type 0x86dd
net_rx: 0x00ba4de8 unknown type 0x86dd
net_rx: 0x00ba4e44 unknown type 0x86dd
net_rx: 0x00ba4ea0 unknown type 0x86dd
net_rx: 0x00ba4efc unknown type 0x86dd
net_rx: 0x00ba4f58 unknown type 0x86dd
net_rx: 0x00ba4fb4 unknown type 0x86dd
net_rx: 0x00ba5010 unknown type 0x86dd
net_rx: 0x00ba506c unknown type 0x86dd
net_rx: 0x00ba50c8 len 176 type 0x0800
net_rx: 0x00ba5124 unknown type 0x86dd
net_rx: 0x00ba5180 len 42 type 0x0806
net_rx: 0x00ba51dc unknown type 0x86dd
net_rx: 0x00ba5238 unknown type 0x86dd
net_rx: 0x00ba5294 len 42 type 0x0806
net_rx: 0x00ba52f0 unknown type 0x86dd
net_rx: 0x00ba534c unknown type 0x86dd
net_rx: 0x00ba53a8 len 42 type 0x0806
net_rx: 0x00ba5404 len 42 type 0x0806
net_rx: 0x00ba5460 unknown type 0x86dd
net_rx: 0x00ba54bc len 42 type 0x0806
net_rx: 0x00ba5518 len 54 type 0x0800
net_rx: 0x00ba5574 unknown type 0x86dd
net_rx: 0x00ba55d0 len 42 type 0x0806
net_rx: 0x00ba562c unknown type 0x86dd
net_rx: 0x00ba5688 len 42 type 0x0806
net_rx: 0x00ba56e4 unknown type 0x86dd
net_rx: 0x00ba5740 len 42 type 0x0806
net_rx: 0x00ba579c len 42 type 0x0806
net_rx: 0x00ba57f8 len 42 type 0x0806
net_rx: 0x00ba5854 len 42 type 0x0806
net_rx: 0x00ba58b0 len 42 type 0x0806
net_rx: 0x00ba590c len 42 type 0x0806
net_rx: 0x00ba5968 unknown type 0x86dd
net_rx: 0x00ba59c4 len 42 type 0x0806
net_rx: 0x00ba5a20 len 42 type 0x0806
net_rx: 0x00ba5a7c len 42 type 0x0806
net_rx: 0x00ba5ad8 len 42 type 0x0806
net_rx: 0x00ba5b34 len 42 type 0x0806
net_rx: 0x00ba5b90 len 42 type 0x0806
net_rx: 0x00ba5bec len 42 type 0x0806
net_rx: 0x00ba5c48 len 42 type 0x0806
net_rx: 0x00ba5ca4 len 42 type 0x0806
net_rx: 0x00ba5d00 len 42 type 0x0806
net_rx: 0x00ba5d5c len 42 type 0x0806
net_rx: 0x00ba5db8 len 42 type 0x0806
net_rx: 0x00ba5e14 len 42 type 0x0806
net_rx: 0x00ba5e70 len 42 type 0x0806
net_rx: 0x00ba5ecc len 42 type 0x0806
net_rx: 0x00ba5f28 len 42 type 0x0806
net_rx: 0x00ba5f84 unknown type 0x86dd
net_rx: 0x00ba5fe0 len 176 type 0x0800
net_rx: 0x00ba603c len 42 type 0x0806
net_rx: 0x00ba6098 len 42 type 0x0806
net_rx: 0x00ba60f4 len 42 type 0x0806
net_rx: 0x00ba6150 len 42 type 0x0806
net_rx: 0x00ba61ac len 42 type 0x0806
net_rx: 0x00ba6208 len 42 type 0x0806
net_rx: 0x00ba6264 len 42 type 0x0806
net_rx: 0x00ba62c0 len 42 type 0x0806
net_rx: 0x00ba631c len 42 type 0x0806
net_rx: 0x00ba6378 len 42 type 0x0806
net_rx: 0x00ba63d4 len 42 type 0x0806
net_rx: 0x00ba6430 len 42 type 0x0806
net_rx: 0x00ba648c len 42 type 0x0806
net_rx: 0x00ba64e8 len 42 type 0x0806
net_rx: 0x00ba6544 len 42 type 0x0806
net_rx: 0x00ba65a0 len 42 type 0x0806
net_rx: 0x00ba65fc len 42 type 0x0806
net_rx: 0x00ba6658 len 42 type 0x0806
net_rx: 0x00ba66b4 len 42 type 0x0806
net_rx: 0x00ba6710 len 42 type 0x0806
net_rx: 0x00ba676c len 42 type 0x0806
net_rx: 0x00ba67c8 len 42 type 0x0806
net_rx: 0x00ba6824 len 42 type 0x0806
net_rx: 0x00ba6880 len 42 type 0x0806
net_rx: 0x00ba68dc len 42 type 0x0806
net_rx: 0x00ba6938 len 42 type 0x0806
net_rx: 0x00ba6994 len 42 type 0x0806
net_rx: 0x00ba69f0 len 42 type 0x0806
net_rx: 0x00ba6a4c len 42 type 0x0806
net_rx: 0x00ba6aa8 len 42 type 0x0806
net_rx: 0x00ba6b04 len 176 type 0x0800
net_rx: 0x00ba6b60 len 42 type 0x0806
net_rx: 0x00ba6bbc unknown type 0x86dd
net_rx: 0x00ba6c18 len 176 type 0x0800
net_rx: 0x00ba6c74 len 176 type 0x0800
net_rx: 0x00ba6cd0 unknown type 0x86dd
net_rx: 0x00ba6d2c len 176 type 0x0800
net_rx: 0x00ba6d88 len 176 type 0x0800
net_rx: 0x00ba6de4 len 176 type 0x0800
net_rx: 0x00ba6e40 len 176 type 0x0800
net_rx: 0x00ba6e9c unknown type 0x86dd
net_rx: 0x00ba6ef8 len 176 type 0x0800
net_rx: 0x00ba6f54 len 176 type 0x0800
net_rx: 0x00ba6fb0 len 176 type 0x0800
net_rx: 0x00ba700c len 176 type 0x0800
net_rx: 0x00ba7068 len 176 type 0x0800
net_rx: 0x00ba70c4 len 176 type 0x0800
net_rx: 0x00ba7120 len 176 type 0x0800
net_rx: 0x00ba717c len 176 type 0x0800
net_rx: 0x00ba71d8 unknown type 0x86dd
net_rx: 0x00ba7234 len 176 type 0x0800
net_rx: 0x00ba7290 len 42 type 0x0806
net_rx: 0x00ba72ec len 42 type 0x0806
net_rx: 0x00ba7348 len 42 type 0x0806
net_rx: 0x00ba73a4 len 42 type 0x0806
net_rx: 0x00ba7400 len 42 type 0x0806
net_rx: 0x00ba745c len 42 type 0x0806
net_rx: 0x00ba74b8 len 42 type 0x0806
net_rx: 0x00ba7514 len 42 type 0x0806
net_rx: 0x00ba7570 len 42 type 0x0806
net_rx: 0x00ba75cc len 42 type 0x0806
net_rx: 0x00ba5180 len 98 type 0x0800

root@embox:/#net_rx: 0x00ba5180 len 98 type 0x0800
net_rx: 0x00ba5180 len 98 type 0x0800
net_rx: 0x00ba5180 len 176 type 0x0800
QEMU: Terminated

Please use labels and text to provide additional information.
This bug reproduced since r4660, on r4658 this works correctly.
gcc 4.8.1, qemu 1.7.50

Original issue reported on code.google.com by ki.stfu on 20 Feb 2014 at 10:53

GoogleCodeExporter commented 9 years ago
don't forget -enable-kvm option

Original comment by ki.stfu on 22 Feb 2014 at 3:09

GoogleCodeExporter commented 9 years ago
Debug output is irrelevant, r4658 is also affected. 
It's only observed with -enable-kvm.

This is a qemu issue. 
It have a superloop in which pollfds prepared to make poll with a timeout. 
tap's fd will be placed in pollfds when network card started.
With -enable-kvm timeout is big and poll started before card is configured. 
When it's configured it isn't breaks poll. Only a keystroke causes poll to exit 
and network card considered on next superloop iteration.
Without -enable-kvm timeout is just small, so card considered soon after 
configured.

Original comment by drakon.m...@gmail.com on 18 Jun 2014 at 1:17

GoogleCodeExporter commented 9 years ago
However, receiving is broken also when embox is causing transimission, e.g. 
ping in start_script

Original comment by drakon.m...@gmail.com on 18 Jun 2014 at 1:24