[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-discuss] [BUG or NOT] NICs in up state can not receive any package

From: Rongqing Li
Subject: [Qemu-discuss] [BUG or NOT] NICs in up state can not receive any packages if other one NIC is in down state
Date: Thu, 16 Aug 2012 13:41:30 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120615 Thunderbird/13.0.1


When qemu has more than two NICs which are connected to Hub,
just one NIC is in down status, other NICs can not receive
any packages.

I see first commit 60c07d933c6 and then 52a3cb869f7 commit made
it works as the upper description, but I think it is unreasonable
and buggy, since sometime, we put some NICs to down, and hope the
remainders are able to work.

Could you tell us why we design it as the description? or is it

reproduce step:

        1. on host, startup a qemu with three NICs
sudo qemu-system-x86_64 -net nic,macaddr=00:30:48:DB:5B:76,model=e1000 -net nic,macaddr=00:30:48:DB:5B:75,model=e1000 -net tap,script=no
        sudo ifconfig tap0

        2. on qemu target, Up one NIC, and Down one NIC
        ifconfig eth0 up
        ifconfig eth1 down
        ping failed.

        3. Up the eth1 NIC which is in down status.
        ifconfig eth1 up
        ping success.

commit 52a3cb869f7e083d135b11da432a52788a25228e
Author: Zhi Yong Wu <address@hidden>
Date:   Tue Jul 24 16:35:19 2012 +0100

    hub: add the support for hub own flow control

    Only when all other hub port's *peer* .can_receive() all return 1,
    the source hub port .can_receive() return 1.

    Reviewed-by: Paolo Bonzini <address@hidden>
    Signed-off-by: Zhi Yong Wu <address@hidden>
    Signed-off-by: Stefan Hajnoczi <address@hidden>
    Reviewed-by: Laszlo Ersek <address@hidden>

commit 60c07d933c66c4b30a83b7ccbc8a0cb3df1b2d0e
Author: Vincent Palatin <address@hidden>
Date:   Wed Mar 2 17:25:02 2011 -0500

    net: fix qemu_can_send_packet logic

    If any of the clients is not ready to receive (ie it has a can_receive
    callback and can_receive() returns false), we don't want to start
    sending, else this client may miss/discard the packet.

    I got this behaviour with the following setup :
    the emulated machine is using an USB-ethernet adapter, it is connected
    to the network using SLIRP and I'm dumping the traffic in a .pcap file.
    As per the following command line :
-net nic,model=usb,vlan=1 -net user,vlan=1 -net dump,vlan=1,file=/tmp/pkt.pcap
    Every time that two packets are coming in a row from the host, the
    usb-net code will receive the first one, then returns 0 to can_receive
    call since it has a 1 packet long queue. But as the dump code is always
    ready to receive, qemu_can_send_packet will return true and the next
    packet will discard the previous one in the usb-net code.

    Signed-off-by: Vincent Palatin <address@hidden>
    Signed-off-by: Blue Swirl <address@hidden>

Best Regard

reply via email to

[Prev in Thread] Current Thread [Next in Thread]