From patchwork Tue Jun 19 22:22:59 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhiyong Wu X-Patchwork-Id: 165857 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 78F42B7006 for ; Wed, 20 Jun 2012 08:23:58 +1000 (EST) Received: from localhost ([::1]:57762 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sh6q4-0005Bi-0t for incoming@patchwork.ozlabs.org; Tue, 19 Jun 2012 18:23:56 -0400 Received: from eggs.gnu.org ([208.118.235.92]:36739) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sh6pu-0005B1-KM for qemu-devel@nongnu.org; Tue, 19 Jun 2012 18:23:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sh6pr-0005yF-Lm for qemu-devel@nongnu.org; Tue, 19 Jun 2012 18:23:46 -0400 Received: from e1.ny.us.ibm.com ([32.97.182.141]:34653) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sh6pr-0005xs-FC for qemu-devel@nongnu.org; Tue, 19 Jun 2012 18:23:43 -0400 Received: from /spool/local by e1.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 19 Jun 2012 18:23:41 -0400 Received: from d01dlp01.pok.ibm.com (9.56.224.56) by e1.ny.us.ibm.com (192.168.1.101) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 19 Jun 2012 18:23:09 -0400 Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234]) by d01dlp01.pok.ibm.com (Postfix) with ESMTP id D2C1738C8056 for ; Tue, 19 Jun 2012 18:23:08 -0400 (EDT) Received: from d01av02.pok.ibm.com (d01av02.pok.ibm.com [9.56.224.216]) by d01relay02.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q5JMN8kq167294 for ; Tue, 19 Jun 2012 18:23:08 -0400 Received: from d01av02.pok.ibm.com (loopback [127.0.0.1]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q5JMN8Qn013383 for ; Tue, 19 Jun 2012 19:23:08 -0300 Received: from us.ibm.com (f15.cn.ibm.com [9.115.118.27]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with SMTP id q5JMN1Qs012625; Tue, 19 Jun 2012 19:23:01 -0300 Received: by us.ibm.com (sSMTP sendmail emulation); Wed, 20 Jun 2012 06:22:59 +0800 From: zwu.kernel@gmail.com To: qemu-devel@nongnu.org Date: Wed, 20 Jun 2012 06:22:59 +0800 Message-Id: <1340144579-6881-1-git-send-email-zwu.kernel@gmail.com> X-Mailer: git-send-email 1.7.6 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 12061922-6078-0000-0000-00000C47C8AC X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 32.97.182.141 Cc: aliguori@us.ibm.com, Zhi Yong Wu , stefanha@linux.vnet.ibm.com Subject: [Qemu-devel] [PATCH 08/17] net: Remove VLANState X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Stefan Hajnoczi VLANState is no longer used and can be removed. Signed-off-by: Stefan Hajnoczi Signed-off-by: Zhi Yong Wu --- hw/dp8393x.c | 1 - hw/exynos4_boards.c | 2 +- hw/highbank.c | 2 +- hw/integratorcp.c | 2 +- hw/mcf5208.c | 2 +- hw/mcf_fec.c | 1 - hw/mips_mipssim.c | 2 +- hw/mips_r4k.c | 2 +- hw/vexpress.c | 2 +- hw/xtensa_lx60.c | 2 +- net.c | 127 +++++++++------------------------------------------ net.h | 8 --- net/socket.c | 6 +- net/tap.c | 6 +- net/tap.h | 2 +- qemu-common.h | 1 - 16 files changed, 37 insertions(+), 131 deletions(-) diff --git a/hw/dp8393x.c b/hw/dp8393x.c index 017d074..3fd7677 100644 --- a/hw/dp8393x.c +++ b/hw/dp8393x.c @@ -899,7 +899,6 @@ void dp83932_init(NICInfo *nd, target_phys_addr_t base, int it_shift, s->regs[SONIC_SR] = 0x0004; /* only revision recognized by Linux */ s->conf.macaddr = nd->macaddr; - s->conf.vlan = nd->vlan; s->conf.peer = nd->netdev; s->nic = qemu_new_nic(&net_dp83932_info, &s->conf, nd->model, nd->name, s); diff --git a/hw/exynos4_boards.c b/hw/exynos4_boards.c index e5c2a5f..4bb0a60 100644 --- a/hw/exynos4_boards.c +++ b/hw/exynos4_boards.c @@ -81,7 +81,7 @@ static void lan9215_init(uint32_t base, qemu_irq irq) SysBusDevice *s; /* This should be a 9215 but the 9118 is close enough */ - if (nd_table[0].vlan) { + if (nd_table[0].used) { qemu_check_nic_model(&nd_table[0], "lan9118"); dev = qdev_create(NULL, "lan9118"); qdev_set_nic_properties(dev, &nd_table[0]); diff --git a/hw/highbank.c b/hw/highbank.c index 4bdea5d..11aa131 100644 --- a/hw/highbank.c +++ b/hw/highbank.c @@ -284,7 +284,7 @@ static void highbank_init(ram_addr_t ram_size, sysbus_create_simple("sysbus-ahci", 0xffe08000, pic[83]); - if (nd_table[0].vlan) { + if (nd_table[0].used) { qemu_check_nic_model(&nd_table[0], "xgmac"); dev = qdev_create(NULL, "xgmac"); qdev_set_nic_properties(dev, &nd_table[0]); diff --git a/hw/integratorcp.c b/hw/integratorcp.c index deacbf4..d0e2e90 100644 --- a/hw/integratorcp.c +++ b/hw/integratorcp.c @@ -493,7 +493,7 @@ static void integratorcp_init(ram_addr_t ram_size, sysbus_create_simple("pl050_keyboard", 0x18000000, pic[3]); sysbus_create_simple("pl050_mouse", 0x19000000, pic[4]); sysbus_create_varargs("pl181", 0x1c000000, pic[23], pic[24], NULL); - if (nd_table[0].vlan) + if (nd_table[0].used) smc91c111_init(&nd_table[0], 0xc8000000, pic[27]); sysbus_create_simple("pl110", 0xc0000000, pic[22]); diff --git a/hw/mcf5208.c b/hw/mcf5208.c index d3ebe8d..ee25b1b 100644 --- a/hw/mcf5208.c +++ b/hw/mcf5208.c @@ -236,7 +236,7 @@ static void mcf5208evb_init(ram_addr_t ram_size, fprintf(stderr, "Too many NICs\n"); exit(1); } - if (nd_table[0].vlan) + if (nd_table[0].used) mcf_fec_init(address_space_mem, &nd_table[0], 0xfc030000, pic + 36); diff --git a/hw/mcf_fec.c b/hw/mcf_fec.c index ae37bef..739b349 100644 --- a/hw/mcf_fec.c +++ b/hw/mcf_fec.c @@ -472,7 +472,6 @@ void mcf_fec_init(MemoryRegion *sysmem, NICInfo *nd, memory_region_add_subregion(sysmem, base, &s->iomem); s->conf.macaddr = nd->macaddr; - s->conf.vlan = nd->vlan; s->conf.peer = nd->netdev; s->nic = qemu_new_nic(&net_mcf_fec_info, &s->conf, nd->model, nd->name, s); diff --git a/hw/mips_mipssim.c b/hw/mips_mipssim.c index eb03047..830f635 100644 --- a/hw/mips_mipssim.c +++ b/hw/mips_mipssim.c @@ -217,7 +217,7 @@ mips_mipssim_init (ram_addr_t ram_size, if (serial_hds[0]) serial_init(0x3f8, env->irq[4], 115200, serial_hds[0]); - if (nd_table[0].vlan) + if (nd_table[0].used) /* MIPSnet uses the MIPS CPU INT0, which is interrupt 2. */ mipsnet_init(0x4200, env->irq[2], &nd_table[0]); } diff --git a/hw/mips_r4k.c b/hw/mips_r4k.c index d685999..967a76e 100644 --- a/hw/mips_r4k.c +++ b/hw/mips_r4k.c @@ -283,7 +283,7 @@ void mips_r4k_init (ram_addr_t ram_size, isa_vga_init(isa_bus); - if (nd_table[0].vlan) + if (nd_table[0].used) isa_ne2000_init(isa_bus, 0x300, 9, &nd_table[0]); ide_drive_get(hd, MAX_IDE_BUS); diff --git a/hw/vexpress.c b/hw/vexpress.c index 8072c5a..12aa2d5 100644 --- a/hw/vexpress.c +++ b/hw/vexpress.c @@ -420,7 +420,7 @@ static void vexpress_common_init(const VEDBoardInfo *daughterboard, memory_region_add_subregion(sysmem, map[VE_VIDEORAM], vram); /* 0x4e000000 LAN9118 Ethernet */ - if (nd_table[0].vlan) { + if (nd_table[0].used) { lan9118_init(&nd_table[0], map[VE_ETHERNET], pic[15]); } diff --git a/hw/xtensa_lx60.c b/hw/xtensa_lx60.c index 152eed9..c4f616f 100644 --- a/hw/xtensa_lx60.c +++ b/hw/xtensa_lx60.c @@ -201,7 +201,7 @@ static void lx_init(const LxBoardDesc *board, memory_region_init(system_io, "lx60.io", 224 * 1024 * 1024); memory_region_add_subregion(system_memory, 0xf0000000, system_io); lx60_fpga_init(system_io, 0x0d020000); - if (nd_table[0].vlan) { + if (nd_table[0].used) { lx60_net_init(system_io, 0x0d030000, 0x0d030400, 0x0d800000, xtensa_get_extint(env, 1), nd_table); } diff --git a/net.c b/net.c index 812589a..73325b0 100644 --- a/net.c +++ b/net.c @@ -44,7 +44,6 @@ # define CONFIG_NET_BRIDGE #endif -static QTAILQ_HEAD(, VLANState) vlans; static QTAILQ_HEAD(, VLANClientState) non_vlan_clients; int default_net = 1; @@ -249,11 +248,7 @@ NICState *qemu_new_nic(NetClientInfo *info, static void qemu_cleanup_vlan_client(VLANClientState *vc) { - if (vc->vlan) { - QTAILQ_REMOVE(&vc->vlan->clients, vc, next); - } else { - QTAILQ_REMOVE(&non_vlan_clients, vc, next); - } + QTAILQ_REMOVE(&non_vlan_clients, vc, next); if (vc->info->cleanup) { vc->info->cleanup(vc); @@ -262,13 +257,11 @@ static void qemu_cleanup_vlan_client(VLANClientState *vc) static void qemu_free_vlan_client(VLANClientState *vc) { - if (!vc->vlan) { - if (vc->send_queue) { - qemu_del_net_queue(vc->send_queue); - } - if (vc->peer) { - vc->peer->peer = NULL; - } + if (vc->send_queue) { + qemu_del_net_queue(vc->send_queue); + } + if (vc->peer) { + vc->peer->peer = NULL; } g_free(vc->name); g_free(vc->model); @@ -278,7 +271,7 @@ static void qemu_free_vlan_client(VLANClientState *vc) void qemu_del_vlan_client(VLANClientState *vc) { /* If there is a peer NIC, delete and cleanup client, but do not free. */ - if (!vc->vlan && vc->peer && vc->peer->info->type == NET_CLIENT_TYPE_NIC) { + if (vc->peer && vc->peer->info->type == NET_CLIENT_TYPE_NIC) { NICState *nic = DO_UPCAST(NICState, nc, vc->peer); if (nic->peer_deleted) { return; @@ -294,7 +287,7 @@ void qemu_del_vlan_client(VLANClientState *vc) } /* If this is a peer NIC and peer has already been deleted, free it now. */ - if (!vc->vlan && vc->peer && vc->info->type == NET_CLIENT_TYPE_NIC) { + if (vc->peer && vc->info->type == NET_CLIENT_TYPE_NIC) { NICState *nic = DO_UPCAST(NICState, nc, vc); if (nic->peer_deleted) { qemu_free_vlan_client(vc->peer); @@ -308,52 +301,25 @@ void qemu_del_vlan_client(VLANClientState *vc) void qemu_foreach_nic(qemu_nic_foreach func, void *opaque) { VLANClientState *nc; - VLANState *vlan; QTAILQ_FOREACH(nc, &non_vlan_clients, next) { if (nc->info->type == NET_CLIENT_TYPE_NIC) { func(DO_UPCAST(NICState, nc, nc), opaque); } } - - QTAILQ_FOREACH(vlan, &vlans, next) { - QTAILQ_FOREACH(nc, &vlan->clients, next) { - if (nc->info->type == NET_CLIENT_TYPE_NIC) { - func(DO_UPCAST(NICState, nc, nc), opaque); - } - } - } } int qemu_can_send_packet(VLANClientState *sender) { - VLANState *vlan = sender->vlan; - VLANClientState *vc; - - if (sender->peer) { - if (sender->peer->receive_disabled) { - return 0; - } else if (sender->peer->info->can_receive && - !sender->peer->info->can_receive(sender->peer)) { - return 0; - } else { - return 1; - } - } - - if (!sender->vlan) { + if (!sender->peer) { return 1; } - QTAILQ_FOREACH(vc, &vlan->clients, next) { - if (vc == sender) { - continue; - } - - /* no can_receive() handler, they can always receive */ - if (vc->info->can_receive && !vc->info->can_receive(vc)) { - return 0; - } + 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; } @@ -390,34 +356,18 @@ static ssize_t qemu_deliver_packet(VLANClientState *sender, void qemu_purge_queued_packets(VLANClientState *vc) { - NetQueue *queue; - - if (!vc->peer && !vc->vlan) { + if (!vc->peer) { return; } - if (vc->peer) { - queue = vc->peer->send_queue; - } else { - queue = vc->vlan->send_queue; - } - - qemu_net_queue_purge(queue, vc); + qemu_net_queue_purge(vc->peer->send_queue, vc); } void qemu_flush_queued_packets(VLANClientState *vc) { - NetQueue *queue; - vc->receive_disabled = 0; - if (vc->vlan) { - queue = vc->vlan->send_queue; - } else { - queue = vc->send_queue; - } - - qemu_net_queue_flush(queue); + qemu_net_queue_flush(vc->send_queue); } static ssize_t qemu_send_packet_async_with_flags(VLANClientState *sender, @@ -432,15 +382,11 @@ static ssize_t qemu_send_packet_async_with_flags(VLANClientState *sender, hex_dump(stdout, buf, size); #endif - if (sender->link_down || (!sender->peer && !sender->vlan)) { + if (sender->link_down || !sender->peer) { return size; } - if (sender->peer) { - queue = sender->peer->send_queue; - } else { - queue = sender->vlan->send_queue; - } + queue = sender->peer->send_queue; return qemu_net_queue_send(queue, sender, flags, buf, size, sent_cb); } @@ -500,15 +446,11 @@ ssize_t qemu_sendv_packet_async(VLANClientState *sender, { NetQueue *queue; - if (sender->link_down || (!sender->peer && !sender->vlan)) { + if (sender->link_down || !sender->peer) { return iov_size(iov, iovcnt); } - if (sender->peer) { - queue = sender->peer->send_queue; - } else { - queue = sender->vlan->send_queue; - } + queue = sender->peer->send_queue; return qemu_net_queue_send_iov(queue, sender, QEMU_NET_PACKET_FLAG_NONE, @@ -1153,18 +1095,9 @@ static void print_net_client(Monitor *mon, VLANClientState *vc) void do_info_network(Monitor *mon) { - VLANState *vlan; VLANClientState *vc, *peer; net_client_type type; - QTAILQ_FOREACH(vlan, &vlans, next) { - monitor_printf(mon, "VLAN %d devices:\n", vlan->id); - - QTAILQ_FOREACH(vc, &vlan->clients, next) { - monitor_printf(mon, " "); - print_net_client(mon, vc); - } - } monitor_printf(mon, "Devices not on any VLAN:\n"); QTAILQ_FOREACH(vc, &non_vlan_clients, next) { peer = vc->peer; @@ -1183,16 +1116,8 @@ void do_info_network(Monitor *mon) void qmp_set_link(const char *name, bool up, Error **errp) { - VLANState *vlan; VLANClientState *vc = NULL; - QTAILQ_FOREACH(vlan, &vlans, next) { - QTAILQ_FOREACH(vc, &vlan->clients, next) { - if (strcmp(vc->name, name) == 0) { - goto done; - } - } - } QTAILQ_FOREACH(vc, &non_vlan_clients, next) { if (!strcmp(vc->name, name)) { goto done; @@ -1201,7 +1126,7 @@ void qmp_set_link(const char *name, bool up, Error **errp) done: if (!vc) { - error_set(errp, QERR_DEVICE_NOT_FOUND, name); + qerror_report(QERR_DEVICE_NOT_FOUND, name); return; } @@ -1225,15 +1150,8 @@ done: void net_cleanup(void) { - VLANState *vlan; VLANClientState *vc, *next_vc; - QTAILQ_FOREACH(vlan, &vlans, next) { - QTAILQ_FOREACH_SAFE(vc, &vlan->clients, next, next_vc) { - qemu_del_vlan_client(vc); - } - } - QTAILQ_FOREACH_SAFE(vc, &non_vlan_clients, next, next_vc) { qemu_del_vlan_client(vc); } @@ -1322,7 +1240,6 @@ int net_init_clients(void) #endif } - QTAILQ_INIT(&vlans); QTAILQ_INIT(&non_vlan_clients); if (qemu_opts_foreach(qemu_find_opts("netdev"), net_init_netdev, NULL, 1) == -1) diff --git a/net.h b/net.h index 791ca4f..7b8501a 100644 --- a/net.h +++ b/net.h @@ -64,7 +64,6 @@ struct VLANClientState { NetClientInfo *info; int link_down; QTAILQ_ENTRY(VLANClientState) next; - struct VLANState *vlan; VLANClientState *peer; NetQueue *send_queue; char *model; @@ -80,13 +79,6 @@ typedef struct NICState { bool peer_deleted; } NICState; -struct VLANState { - int id; - QTAILQ_HEAD(, VLANClientState) clients; - QTAILQ_ENTRY(VLANState) next; - NetQueue *send_queue; -}; - VLANClientState *qemu_find_netdev(const char *id); VLANClientState *qemu_new_net_client(NetClientInfo *info, VLANClientState *peer, diff --git a/net/socket.c b/net/socket.c index d4f7a7b..62e5ac5 100644 --- a/net/socket.c +++ b/net/socket.c @@ -537,7 +537,7 @@ static int net_socket_mcast_init(VLANClientState *peer, } -static int net_socket_udp_init(VLANState *vlan, +static int net_socket_udp_init(NetClientState *peer, const char *model, const char *name, const char *rhost, @@ -575,7 +575,7 @@ static int net_socket_udp_init(VLANState *vlan, return -1; } - s = net_socket_fd_init(vlan, model, name, fd, 0); + s = net_socket_fd_init(peer, model, name, fd, 0); if (!s) { return -1; } @@ -678,7 +678,7 @@ int net_init_socket(QemuOpts *opts, const char *name, VLANClientState *peer) return -1; } - if (net_socket_udp_init(vlan, "udp", name, udp, localaddr) == -1) { + if (net_socket_udp_init(peer, "udp", name, udp, localaddr) == -1) { return -1; } } else { diff --git a/net/tap.c b/net/tap.c index 42e29fe..c241a65 100644 --- a/net/tap.c +++ b/net/tap.c @@ -513,7 +513,7 @@ static int net_bridge_run_helper(const char *helper, const char *bridge) return -1; } -int net_init_bridge(QemuOpts *opts, const char *name, VLANState *vlan) +int net_init_bridge(QemuOpts *opts, const char *name, NetClientState *peer) { TAPState *s; int fd, vnet_hdr; @@ -535,7 +535,7 @@ int net_init_bridge(QemuOpts *opts, const char *name, VLANState *vlan) vnet_hdr = tap_probe_vnet_hdr(fd); - s = net_tap_fd_init(vlan, "bridge", name, fd, vnet_hdr); + s = net_tap_fd_init(peer, "bridge", name, fd, vnet_hdr); if (!s) { close(fd); return -1; @@ -650,7 +650,7 @@ int net_init_tap(QemuOpts *opts, const char *name, VLANClientState *peer) model = "tap"; } - s = net_tap_fd_init(vlan, model, name, fd, vnet_hdr); + s = net_tap_fd_init(peer, model, name, fd, vnet_hdr); if (!s) { close(fd); return -1; diff --git a/net/tap.h b/net/tap.h index d8bbc39..fcc90dc 100644 --- a/net/tap.h +++ b/net/tap.h @@ -57,6 +57,6 @@ int tap_get_fd(VLANClientState *vc); struct vhost_net; struct vhost_net *tap_get_vhost_net(VLANClientState *vc); -int net_init_bridge(QemuOpts *opts, const char *name, VLANState *vlan); +int net_init_bridge(QemuOpts *opts, const char *name, NetClientState *peer); #endif /* QEMU_NET_TAP_H */ diff --git a/qemu-common.h b/qemu-common.h index 8f87e41..b72ee07 100644 --- a/qemu-common.h +++ b/qemu-common.h @@ -235,7 +235,6 @@ typedef struct TextConsole TextConsole; typedef TextConsole QEMUConsole; typedef struct CharDriverState CharDriverState; typedef struct MACAddr MACAddr; -typedef struct VLANState VLANState; typedef struct VLANClientState VLANClientState; typedef struct i2c_bus i2c_bus; typedef struct ISABus ISABus;