Files
qemu/hw
Jason Wang b9d03e352c e1000: link auto-negotiation emulation
Indeed, there's nothing else except for the time spent on the
negotiation needs to be emulated. This is needed for resuming windows
guest from hibernation, as without a proper delay, qemu would send the
packet too early ( guest even does not have a proper intr handler),
which could lead windows guest hang.

This patch first introduces an array of function pointers to make it
possible to emulate per-register write behavior. Then traps the
PHY_CTRL register write and when guest want to restart the link auto
negotiation, we would down the link and mark the auto negotiation in
progress in PHY_STATUS register. After time, a timer with 500 ms (
which is the minimum timeout of auto-negotation specified in 802.3
spec). The link would be up when timer expired.

Test with resuming windows guest plus flood ping and linux ethtool
linkstatus test.

Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2012-04-25 10:53:48 +03:00
..
2012-02-24 14:01:19 +05:30
2012-04-12 19:01:42 -03:00
2012-04-17 10:23:29 +02:00
2012-04-17 16:57:58 +04:00
2012-02-07 22:11:04 +04:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-01-22 07:27:06 +00:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-17 16:30:06 +00:00
2012-03-17 16:30:06 +00:00
2012-03-14 22:20:26 +01:00
2012-01-13 10:55:56 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-24 13:06:41 +00:00
2012-02-15 09:39:21 -06:00
2011-12-06 09:56:41 +00:00
2012-03-13 14:57:12 +00:00
2012-01-13 10:55:56 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-01-04 02:48:14 +01:00
2011-10-17 15:59:18 +02:00
2012-02-15 09:39:21 -06:00
2012-03-19 10:52:52 +00:00
2012-03-14 22:20:26 +01:00
2012-04-25 10:53:48 +03:00
2012-01-13 10:55:56 -06:00
2012-02-15 09:39:21 -06:00
2012-04-25 10:53:47 +03:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2011-08-08 10:22:29 -05:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-17 11:13:05 +00:00
2012-02-10 10:44:52 +00:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2011-12-06 09:56:41 +00:00
2011-12-14 11:09:12 +00:00
2012-02-15 09:39:21 -06:00
2011-09-10 14:49:51 +00:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-07 12:27:41 +02:00
2012-03-07 12:27:41 +02:00
2012-02-15 09:39:21 -06:00
2012-02-17 09:58:22 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-19 11:30:56 +00:00
2011-10-16 11:10:48 +00:00
2012-02-15 09:39:21 -06:00
2012-03-30 08:14:11 -05:00
2012-03-30 08:14:11 -05:00
2012-02-15 09:39:21 -06:00
2012-02-24 13:36:04 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2011-12-14 11:08:23 +00:00
2011-12-14 11:08:23 +00:00
2011-10-21 18:14:29 +02:00
2011-10-21 18:14:29 +02:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2011-11-28 15:38:42 +02:00
2012-03-14 22:20:26 +01:00
2011-11-28 15:38:42 +02:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-15 20:55:45 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-22 09:02:19 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2011-08-08 10:22:29 -05:00
2012-03-15 16:54:21 +00:00
2012-03-15 16:54:21 +00:00
2011-11-28 15:38:41 +02:00
2012-02-15 09:39:21 -06:00
2012-03-15 16:54:21 +00:00
2012-02-15 09:39:21 -06:00
2012-03-24 13:06:41 +00:00
2011-11-28 15:38:41 +02:00
2012-03-15 16:54:21 +00:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-04-17 10:23:21 +02:00
2011-11-24 18:32:03 +02:00
2012-03-16 00:41:28 +02:00
2011-08-22 10:22:03 -05:00
2011-08-22 10:22:03 -05:00
2012-01-27 10:50:50 -06:00
2012-02-15 09:39:21 -06:00
2012-02-17 09:58:22 -06:00
2012-02-17 09:58:22 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-30 10:31:23 +00:00
2012-02-15 09:39:21 -06:00
2011-12-14 11:08:23 +00:00
2011-12-14 11:08:23 +00:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-04-07 14:00:45 +00:00
2012-04-12 11:14:29 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2011-09-07 09:20:09 +02:00
2012-03-14 22:20:26 +01:00
2011-11-24 18:31:59 +02:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-04-19 16:26:33 +02:00
2012-04-19 16:26:33 +02:00
2012-02-15 09:39:21 -06:00
2011-12-06 09:56:41 +00:00
2012-02-15 09:39:21 -06:00
2011-11-24 18:32:03 +02:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-16 00:41:15 +02:00
2012-03-16 00:41:15 +02:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-16 00:41:28 +02:00
2012-03-16 00:41:28 +02:00
2012-01-13 10:55:56 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-04-15 20:02:28 +02:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-04-07 14:00:45 +00:00
2012-04-04 19:20:44 +00:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-04-17 10:23:21 +02:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-04 12:45:10 +00:00
2012-02-04 12:45:10 +00:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-24 13:06:41 +00:00
2012-02-04 12:45:10 +00:00
2012-04-11 13:19:32 +03:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-16 00:45:23 +02:00
2012-04-25 10:53:47 +03:00
2012-04-19 10:31:05 +02:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-01-22 07:27:06 +00:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-09 07:02:50 -06:00