[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 3/7] e1000: PHY loopback mode support
From: |
Jason Wang |
Subject: |
[Qemu-devel] [PATCH 3/7] e1000: PHY loopback mode support |
Date: |
Thu, 22 Mar 2012 18:01:59 +0800 |
User-agent: |
StGit/0.16-1-g60c4 |
The missing of loopback mode prevent the running of self diagnosis
program in guest. This patch adds this support.
After this patch, loopback test of ethtool were passed in guest.
Signed-off-by: Jason Wang <address@hidden>
---
hw/e1000.c | 14 ++++++++++++--
1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/hw/e1000.c b/hw/e1000.c
index dd6a97d..bc26a0c 100644
--- a/hw/e1000.c
+++ b/hw/e1000.c
@@ -352,6 +352,16 @@ fcs_len(E1000State *s)
}
static void
+e1000_send_packet(E1000State *s, const uint8_t *buf, int size)
+{
+ if (s->phy_reg[PHY_CTRL] & MII_CR_LOOPBACK) {
+ s->nic->nc.info->receive(&s->nic->nc, buf, size);
+ } else {
+ qemu_send_packet(&s->nic->nc, buf, size);
+ }
+}
+
+static void
xmit_seg(E1000State *s)
{
uint16_t len, *sp;
@@ -400,9 +410,9 @@ xmit_seg(E1000State *s)
memmove(tp->vlan, tp->data, 4);
memmove(tp->data, tp->data + 4, 8);
memcpy(tp->data + 8, tp->vlan_header, 4);
- qemu_send_packet(&s->nic->nc, tp->vlan, tp->size + 4);
+ e1000_send_packet(s, tp->vlan, tp->size + 4);
} else
- qemu_send_packet(&s->nic->nc, tp->data, tp->size);
+ e1000_send_packet(s, tp->data, tp->size);
s->mac_reg[TPT]++;
s->mac_reg[GPTC]++;
n = s->mac_reg[TOTL];
- [Qemu-devel] [PATCH 1/7] e1000: introduce bits of PHY control register, Jason Wang, 2012/03/22
- [Qemu-devel] [PATCH 2/7] e1000: conditionally raise irq at the end of MDI cycle, Jason Wang, 2012/03/22
- [Qemu-devel] [PATCH 3/7] e1000: PHY loopback mode support,
Jason Wang <=
- [Qemu-devel] [PATCH 4/7] e1000: introduce helpers to manipulate link status, Jason Wang, 2012/03/22
- [Qemu-devel] [PATCH 5/7] e1000: introduce bit for debugging PHY emulation, Jason Wang, 2012/03/22
- [Qemu-devel] [PATCH 6/7] e1000: link auto-negotiation emulation, Jason Wang, 2012/03/22
- [Qemu-devel] [PATCH 7/7] e1000: set E1000_ICR_INT_ASSERTED only for 8257x, Jason Wang, 2012/03/22