On Fri, Aug 24, 2012 at 9:33 AM, Rongqing Li <[email protected]> wrote:
>
>
> On 2012年08月24日 16:20, Paolo Bonzini wrote:
>>
>> A link-down NIC should always return 1 from can_receive (and will drop
>> the packet).  Is that the real bug here?
>>
>
> A link-down NIC always return 0 from can_receive.
>
> Yes, it is a bug.

The code says something different.  link_down isn't taken into account
by netc.:qemu_can_send_packet():

int qemu_can_send_packet(NetClientState *sender)
{
    if (!sender->peer) {
        return 1;
    }

    if (sender->peer->receive_disabled) {
        return 0;
    } else if (sender->peer->info->can_receive &&
               !sender->peer->info->can_receive(sender->peer)) {
        return 0;
    }
    return 1;
}

If the net client has no ->can_receive then we return 1.  Otherwise we
return ->can_receive().

Were you thinking of a specific NIC where .can_receive() returns 0
when link_down=1?

Stefan

Reply via email to