Revert "e1000: no need auto-negotiation if link was down"
This reverts commit 84dd212024
.
I'm not sure what issue the original commit was meant to fix, or if
the logic is actually wrong, but it causes e1000 to stop working
after a guest issues a reset.
>From what I can tell a guest with an e1000 nic has no way of changing
the link status, as far as it's NetClient peer is concerned, except
in the auto-negotiation path, so with this patch in place there's no
recovery after a reset, since the link goes down and stays that way.
Revert this patch now to fix the bigger problem, and handle any
lingering issues with a follow-up.
Reproduced/tested with qemu-jeos and Ubuntu 12.10.
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
5dea9a694f
commit
70ddd9f66d
@ -166,11 +166,6 @@ static void
|
|||||||
set_phy_ctrl(E1000State *s, int index, uint16_t val)
|
set_phy_ctrl(E1000State *s, int index, uint16_t val)
|
||||||
{
|
{
|
||||||
if ((val & MII_CR_AUTO_NEG_EN) && (val & MII_CR_RESTART_AUTO_NEG)) {
|
if ((val & MII_CR_AUTO_NEG_EN) && (val & MII_CR_RESTART_AUTO_NEG)) {
|
||||||
/* no need auto-negotiation if link was down */
|
|
||||||
if (s->nic->nc.link_down) {
|
|
||||||
s->phy_reg[PHY_STATUS] |= MII_SR_AUTONEG_COMPLETE;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
s->nic->nc.link_down = true;
|
s->nic->nc.link_down = true;
|
||||||
e1000_link_down(s);
|
e1000_link_down(s);
|
||||||
s->phy_reg[PHY_STATUS] &= ~MII_SR_AUTONEG_COMPLETE;
|
s->phy_reg[PHY_STATUS] &= ~MII_SR_AUTONEG_COMPLETE;
|
||||||
|
Loading…
Reference in New Issue
Block a user