[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 16/16] hub: add the support for hub own flow con
From: |
Laszlo Ersek |
Subject: |
Re: [Qemu-devel] [PATCH 16/16] hub: add the support for hub own flow control |
Date: |
Tue, 24 Jul 2012 00:27:54 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:10.0.6esrpre) Gecko/20120714 Thunderbird/10.0.6 |
On 07/20/12 14:01, Stefan Hajnoczi wrote:
> From: Zhi Yong Wu <address@hidden>
>
> Only when all other hub port's *peer* .can_receive() all return 1,
> the source hub port .can_receive() return 1.
>
> Reviewed-off-by: Paolo Bonzini <address@hidden>
Probably a typo.
> Signed-off-by: Zhi Yong Wu <address@hidden>
> Signed-off-by: Stefan Hajnoczi <address@hidden>
> ---
> net/hub.c | 27 ++++++++++++++++++++++++---
> 1 file changed, 24 insertions(+), 3 deletions(-)
>
> diff --git a/net/hub.c b/net/hub.c
> index f697a78..2d67df5 100644
> --- a/net/hub.c
> +++ b/net/hub.c
> @@ -15,6 +15,7 @@
> #include "monitor.h"
> #include "net.h"
> #include "hub.h"
> +#include "iov.h"
>
> /*
> * A hub broadcasts incoming packets to all its ports except the source port.
> @@ -59,16 +60,16 @@ static ssize_t net_hub_receive_iov(NetHub *hub,
> NetHubPort *source_port,
> const struct iovec *iov, int iovcnt)
> {
> NetHubPort *port;
> - ssize_t ret = 0;
> + ssize_t len = iov_size(iov, iovcnt);
>
> QLIST_FOREACH(port, &hub->ports, next) {
> if (port == source_port) {
> continue;
> }
>
> - ret = qemu_sendv_packet(&port->nc, iov, iovcnt);
> + qemu_sendv_packet(&port->nc, iov, iovcnt);
> }
> - return ret;
> + return len;
> }
This seems to consolidate net_hub_receive_iov()'s retval with that of
net_hub_receive(), but may I ask why it used to be calculated differently?
>
> static NetHub *net_hub_new(unsigned int id)
> @@ -85,6 +86,25 @@ static NetHub *net_hub_new(unsigned int id)
> return hub;
> }
>
> +static int net_hub_port_can_receive(NetClientState *nc)
> +{
> + NetHubPort *port;
> + NetHubPort *src_port = DO_UPCAST(NetHubPort, nc, nc);
> + NetHub *hub = src_port->hub;
> +
> + QLIST_FOREACH(port, &hub->ports, next) {
> + if (port == src_port) {
> + continue;
> + }
> +
> + if (!qemu_can_send_packet(&port->nc)) {
> + return 0;
> + }
> + }
> +
> + return 1;
> +}
> +
(qemu_can_send_packet() handles a NULL sender->peer, OK.)
No further comments for the series.
Thanks!
Laszlo
- [Qemu-devel] [PATCH 00/16] net: Move legacy QEMU VLAN code into net/hub.c, Stefan Hajnoczi, 2012/07/20
- [Qemu-devel] [PATCH 08/16] net: Remove VLANState, Stefan Hajnoczi, 2012/07/20
- [Qemu-devel] [PATCH 14/16] net: cleanup deliver/deliver_iov func pointers, Stefan Hajnoczi, 2012/07/20
- [Qemu-devel] [PATCH 07/16] net: Remove vlan code from net.c, Stefan Hajnoczi, 2012/07/20
- [Qemu-devel] [PATCH 06/16] net: Convert qdev_prop_vlan to peer with hub, Stefan Hajnoczi, 2012/07/20
- [Qemu-devel] [PATCH 11/16] net: Rename vc local variables to nc, Stefan Hajnoczi, 2012/07/20
- [Qemu-devel] [PATCH 16/16] hub: add the support for hub own flow control, Stefan Hajnoczi, 2012/07/20
- Re: [Qemu-devel] [PATCH 16/16] hub: add the support for hub own flow control,
Laszlo Ersek <=
- [Qemu-devel] [PATCH 02/16] net: Use hubs for the vlan feature, Stefan Hajnoczi, 2012/07/20
- [Qemu-devel] [PATCH 09/16] net: Rename non_vlan_clients to net_clients, Stefan Hajnoczi, 2012/07/20
- [Qemu-devel] [PATCH 13/16] net: Make "info network" output more readable info, Stefan Hajnoczi, 2012/07/20
- [Qemu-devel] [PATCH 12/16] net: Rename qemu_del_vlan_client() to qemu_del_net_client(), Stefan Hajnoczi, 2012/07/20
- [Qemu-devel] [PATCH 04/16] hub: Check that hubs are configured correctly, Stefan Hajnoczi, 2012/07/20