Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.4
kvm.573
kvm-qemu-preXX-net-fix-qemu_can_send_packet-log...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File kvm-qemu-preXX-net-fix-qemu_can_send_packet-logic.patch of Package kvm.573
From 60c07d933c66c4b30a83b7ccbc8a0cb3df1b2d0e Mon Sep 17 00:00:00 2001 From: Vincent Palatin <vpalatin@chromium.org> Date: Wed, 2 Mar 2011 17:25:02 -0500 Subject: [PATCH] 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 <vpalatin@chromium.org> Signed-off-by: Blue Swirl <blauwirbel@gmail.com> --- net.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) Index: qemu-kvm-0.14.0/net.c =================================================================== --- qemu-kvm-0.14.0.orig/net.c +++ qemu-kvm-0.14.0/net.c @@ -432,11 +432,11 @@ int qemu_can_send_packet(VLANClientState } /* no can_receive() handler, they can always receive */ - if (!vc->info->can_receive || vc->info->can_receive(vc)) { - return 1; + if (vc->info->can_receive && !vc->info->can_receive(vc)) { + return 0; } } - return 0; + return 1; } static ssize_t qemu_deliver_packet(VLANClientState *sender,
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor