aboutsummaryrefslogtreecommitdiff
path: root/emulators/qemu-devel/files/patch-slirp_throttle
diff options
context:
space:
mode:
Diffstat (limited to 'emulators/qemu-devel/files/patch-slirp_throttle')
-rw-r--r--emulators/qemu-devel/files/patch-slirp_throttle257
1 files changed, 0 insertions, 257 deletions
diff --git a/emulators/qemu-devel/files/patch-slirp_throttle b/emulators/qemu-devel/files/patch-slirp_throttle
deleted file mode 100644
index 50d8c0fcc39d..000000000000
--- a/emulators/qemu-devel/files/patch-slirp_throttle
+++ /dev/null
@@ -1,257 +0,0 @@
-Index: qemu/vl.c
-===================================================================
-RCS file: /sources/qemu/qemu/vl.c,v
-retrieving revision 1.157
-diff -u -p -r1.157 vl.c
---- vl.c 18 Dec 2005 20:34:32 -0000 1.157
-+++ vl.c 20 Dec 2005 21:11:37 -0000
-@@ -1768,13 +1768,16 @@ VLANState *qemu_find_vlan(int id)
- }
-
- VLANClientState *qemu_new_vlan_client(VLANState *vlan,
-- IOReadHandler *fd_read, void *opaque)
-+ IOReadHandler *fd_read,
-+ IOCanRWHandler *fd_can_read,
-+ void *opaque)
- {
- VLANClientState *vc, **pvc;
- vc = qemu_mallocz(sizeof(VLANClientState));
- if (!vc)
- return NULL;
- vc->fd_read = fd_read;
-+ vc->fd_can_read = fd_can_read;
- vc->opaque = opaque;
- vc->vlan = vlan;
-
-@@ -1786,6 +1789,20 @@ VLANClientState *qemu_new_vlan_client(VL
- return vc;
- }
-
-+int qemu_can_send_packet(VLANClientState *vc1)
-+{
-+ VLANState *vlan = vc1->vlan;
-+ VLANClientState *vc;
-+
-+ for(vc = vlan->first_client; vc != NULL; vc = vc->next) {
-+ if (vc != vc1) {
-+ if (vc->fd_can_read && !vc->fd_can_read(vc->opaque))
-+ return 0;
-+ }
-+ }
-+ return 1;
-+}
-+
- void qemu_send_packet(VLANClientState *vc1, const uint8_t *buf, int size)
- {
- VLANState *vlan = vc1->vlan;
-@@ -1811,7 +1828,7 @@ static VLANClientState *slirp_vc;
-
- int slirp_can_output(void)
- {
-- return 1;
-+ return qemu_can_send_packet(slirp_vc);
- }
-
- void slirp_output(const uint8_t *pkt, int pkt_len)
-@@ -1839,7 +1856,7 @@ static int net_slirp_init(VLANState *vla
- slirp_init();
- }
- slirp_vc = qemu_new_vlan_client(vlan,
-- slirp_receive, NULL);
-+ slirp_receive, NULL, NULL);
- snprintf(slirp_vc->info_str, sizeof(slirp_vc->info_str), "user redirector");
- return 0;
- }
-@@ -2024,7 +2041,7 @@ static TAPState *net_tap_fd_init(VLANSta
- if (!s)
- return NULL;
- s->fd = fd;
-- s->vc = qemu_new_vlan_client(vlan, tap_receive, s);
-+ s->vc = qemu_new_vlan_client(vlan, tap_receive, NULL, s);
- qemu_set_fd_handler(s->fd, tap_send, NULL, s);
- snprintf(s->vc->info_str, sizeof(s->vc->info_str), "tap: fd=%d", fd);
- return s;
-@@ -2327,7 +2344,7 @@ static NetSocketState *net_socket_fd_ini
- return NULL;
- s->fd = fd;
-
-- s->vc = qemu_new_vlan_client(vlan, net_socket_receive_dgram, s);
-+ s->vc = qemu_new_vlan_client(vlan, net_socket_receive_dgram, NULL, s);
- qemu_set_fd_handler(s->fd, net_socket_send_dgram, NULL, s);
-
- /* mcast: save bound address as dst */
-@@ -2355,7 +2372,7 @@ static NetSocketState *net_socket_fd_ini
- return NULL;
- s->fd = fd;
- s->vc = qemu_new_vlan_client(vlan,
-- net_socket_receive, s);
-+ net_socket_receive, NULL, s);
- snprintf(s->vc->info_str, sizeof(s->vc->info_str),
- "socket: fd=%d", fd);
- if (is_connected) {
-Index: qemu/vl.h
-===================================================================
-RCS file: /sources/qemu/qemu/vl.h,v
-retrieving revision 1.99
-diff -u -p -r1.99 vl.h
---- vl.h 18 Dec 2005 20:34:32 -0000 1.99
-+++ vl.h 20 Dec 2005 21:11:38 -0000
-@@ -279,6 +279,9 @@ typedef struct VLANClientState VLANClien
-
- struct VLANClientState {
- IOReadHandler *fd_read;
-+ /* Packets may still be sent if this returns zero. It's used to
-+ rate-limit the slirp code. */
-+ IOCanRWHandler *fd_can_read;
- void *opaque;
- struct VLANClientState *next;
- struct VLANState *vlan;
-@@ -293,8 +296,12 @@ typedef struct VLANState {
-
- VLANState *qemu_find_vlan(int id);
- VLANClientState *qemu_new_vlan_client(VLANState *vlan,
-- IOReadHandler *fd_read, void *opaque);
-+ IOReadHandler *fd_read,
-+ IOCanRWHandler *fd_can_read,
-+ void *opaque);
-+int qemu_can_send_packet(VLANClientState *vc);
- void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size);
-+void qemu_handler_true(void *opaque);
-
- void do_info_network(void);
-
-Index: qemu/hw/lance.c
-===================================================================
-RCS file: /sources/qemu/qemu/hw/lance.c,v
-retrieving revision 1.5
-diff -u -p -r1.5 lance.c
---- hw/lance.c 15 Nov 2005 22:16:05 -0000 1.5
-+++ hw/lance.c 20 Dec 2005 21:11:38 -0000
-@@ -283,6 +283,11 @@ static CPUWriteMemoryFunc *lance_mem_wri
-
- #define MIN_BUF_SIZE 60
-
-+static void lance_can_receive(void *opaque)
-+{
-+ return 1;
-+}
-+
- static void lance_receive(void *opaque, const uint8_t *buf, int size)
- {
- LANCEState *s = opaque;
-@@ -440,7 +445,7 @@ void lance_init(NICInfo *nd, int irq, ui
-
- lance_reset(s);
-
-- s->vc = qemu_new_vlan_client(nd->vlan, lance_receive, s);
-+ s->vc = qemu_new_vlan_client(nd->vlan, lance_receive, lance_can_receive, s);
-
- snprintf(s->vc->info_str, sizeof(s->vc->info_str),
- "lance macaddr=%02x:%02x:%02x:%02x:%02x:%02x",
-Index: qemu/hw/ne2000.c
-===================================================================
-RCS file: /sources/qemu/qemu/hw/ne2000.c,v
-retrieving revision 1.17
-diff -u -p -r1.17 ne2000.c
---- hw/ne2000.c 22 Nov 2005 20:16:13 -0000 1.17
-+++ hw/ne2000.c 20 Dec 2005 21:11:38 -0000
-@@ -200,14 +200,10 @@ static int compute_mcast_idx(const uint8
- return (crc >> 26);
- }
-
--/* return the max buffer size if the NE2000 can receive more data */
--static int ne2000_can_receive(void *opaque)
-+static int ne2000_buffer_full(NE2000State *s)
- {
-- NE2000State *s = opaque;
- int avail, index, boundary;
--
-- if (s->cmd & E8390_STOP)
-- return 0;
-+
- index = s->curpag << 8;
- boundary = s->boundary << 8;
- if (index < boundary)
-@@ -215,8 +211,17 @@ static int ne2000_can_receive(void *opaq
- else
- avail = (s->stop - s->start) - (index - boundary);
- if (avail < (MAX_ETH_FRAME_SIZE + 4))
-- return 0;
-- return MAX_ETH_FRAME_SIZE;
-+ return 1;
-+ return 0;
-+}
-+
-+static int ne2000_can_receive(void *opaque)
-+{
-+ NE2000State *s = opaque;
-+
-+ if (s->cmd & E8390_STOP)
-+ return 1;
-+ return !ne2000_buffer_full(s);
- }
-
- #define MIN_BUF_SIZE 60
-@@ -234,7 +239,7 @@ static void ne2000_receive(void *opaque,
- printf("NE2000: received len=%d\n", size);
- #endif
-
-- if (!ne2000_can_receive(s))
-+ if (s->cmd & E8390_STOP || ne2000_buffer_full(s))
- return;
-
- /* XXX: check this */
-@@ -715,7 +720,8 @@ void isa_ne2000_init(int base, int irq,
-
- ne2000_reset(s);
-
-- s->vc = qemu_new_vlan_client(nd->vlan, ne2000_receive, s);
-+ s->vc = qemu_new_vlan_client(nd->vlan, ne2000_receive,
-+ ne2000_can_receive, s);
-
- snprintf(s->vc->info_str, sizeof(s->vc->info_str),
- "ne2000 macaddr=%02x:%02x:%02x:%02x:%02x:%02x",
-@@ -784,7 +790,8 @@ void pci_ne2000_init(PCIBus *bus, NICInf
- s->pci_dev = (PCIDevice *)d;
- memcpy(s->macaddr, nd->macaddr, 6);
- ne2000_reset(s);
-- s->vc = qemu_new_vlan_client(nd->vlan, ne2000_receive, s);
-+ s->vc = qemu_new_vlan_client(nd->vlan, ne2000_receive,
-+ ne2000_can_receive, s);
-
- snprintf(s->vc->info_str, sizeof(s->vc->info_str),
- "ne2000 pci macaddr=%02x:%02x:%02x:%02x:%02x:%02x",
-Index: qemu/hw/smc91c111.c
-===================================================================
-RCS file: /sources/qemu/qemu/hw/smc91c111.c,v
-retrieving revision 1.2
-diff -u -p -r1.2 smc91c111.c
---- hw/smc91c111.c 18 Dec 2005 17:39:52 -0000 1.2
-+++ hw/smc91c111.c 20 Dec 2005 21:11:38 -0000
-@@ -593,6 +593,17 @@ static uint32_t smc91c111_readl(void *op
- return val;
- }
-
-+static int smc91c111_can_receive(void *opaque)
-+{
-+ smc91c111_state *s = (smc91c111_state *)opaque;
-+
-+ if ((s->rcr & RCR_RXEN) == 0 || (s->rcr & RCR_SOFT_RST))
-+ return 1;
-+ if (s->allocated == (1 << NUM_PACKETS) - 1)
-+ return 0;
-+ return 1;
-+}
-+
- static void smc91c111_receive(void *opaque, const uint8_t *buf, int size)
- {
- smc91c111_state *s = (smc91c111_state *)opaque;
-@@ -697,6 +708,7 @@ void smc91c111_init(NICInfo *nd, uint32_
-
- smc91c111_reset(s);
-
-- s->vc = qemu_new_vlan_client(nd->vlan, smc91c111_receive, s);
-+ s->vc = qemu_new_vlan_client(nd->vlan, smc91c111_receive,
-+ smc91c111_can_receive, s);
- /* ??? Save/restore. */
- }