diff options
author | Stephen Hemminger <shemminger@osdl.org> | 2005-07-22 19:26:09 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-07-31 00:40:53 -0400 |
commit | 4cde06ed0fb58402ec1d6d117122d1058983a393 (patch) | |
tree | fcfff6af9aeb40600ef14930fb6f8651ff8b256e | |
parent | d8a09943ebbaca9befd995d8fe10dd9885256dbf (diff) |
[PATCH] skge: ignore phy interrupts during negotiation
During autonegotiation set PHY interrupt mask to ignore
bogus speed change interrupts.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
-rw-r--r-- | drivers/net/skge.c | 6 | ||||
-rw-r--r-- | drivers/net/skge.h | 8 |
2 files changed, 8 insertions, 6 deletions
diff --git a/drivers/net/skge.c b/drivers/net/skge.c index f50405b4fba2..43a275d97107 100644 --- a/drivers/net/skge.c +++ b/drivers/net/skge.c | |||
@@ -1660,9 +1660,9 @@ static void yukon_init(struct skge_hw *hw, int port) | |||
1660 | 1660 | ||
1661 | /* Enable phy interrupt on autonegotiation complete (or link up) */ | 1661 | /* Enable phy interrupt on autonegotiation complete (or link up) */ |
1662 | if (skge->autoneg == AUTONEG_ENABLE) | 1662 | if (skge->autoneg == AUTONEG_ENABLE) |
1663 | gm_phy_write(hw, port, PHY_MARV_INT_MASK, PHY_M_IS_AN_COMPL); | 1663 | gm_phy_write(hw, port, PHY_MARV_INT_MASK, PHY_M_IS_AN_MSK); |
1664 | else | 1664 | else |
1665 | gm_phy_write(hw, port, PHY_MARV_INT_MASK, PHY_M_DEF_MSK); | 1665 | gm_phy_write(hw, port, PHY_MARV_INT_MASK, PHY_M_IS_DEF_MSK); |
1666 | } | 1666 | } |
1667 | 1667 | ||
1668 | static void yukon_reset(struct skge_hw *hw, int port) | 1668 | static void yukon_reset(struct skge_hw *hw, int port) |
@@ -1891,7 +1891,7 @@ static void yukon_link_up(struct skge_port *skge) | |||
1891 | reg |= GM_GPCR_RX_ENA | GM_GPCR_TX_ENA; | 1891 | reg |= GM_GPCR_RX_ENA | GM_GPCR_TX_ENA; |
1892 | gma_write16(hw, port, GM_GP_CTRL, reg); | 1892 | gma_write16(hw, port, GM_GP_CTRL, reg); |
1893 | 1893 | ||
1894 | gm_phy_write(hw, port, PHY_MARV_INT_MASK, PHY_M_DEF_MSK); | 1894 | gm_phy_write(hw, port, PHY_MARV_INT_MASK, PHY_M_IS_DEF_MSK); |
1895 | skge_link_up(skge); | 1895 | skge_link_up(skge); |
1896 | } | 1896 | } |
1897 | 1897 | ||
diff --git a/drivers/net/skge.h b/drivers/net/skge.h index e2546950bf55..c37214692c07 100644 --- a/drivers/net/skge.h +++ b/drivers/net/skge.h | |||
@@ -1449,10 +1449,12 @@ enum { | |||
1449 | PHY_M_IS_DTE_CHANGE = 1<<2, /* DTE Power Det. Status Changed */ | 1449 | PHY_M_IS_DTE_CHANGE = 1<<2, /* DTE Power Det. Status Changed */ |
1450 | PHY_M_IS_POL_CHANGE = 1<<1, /* Polarity Changed */ | 1450 | PHY_M_IS_POL_CHANGE = 1<<1, /* Polarity Changed */ |
1451 | PHY_M_IS_JABBER = 1<<0, /* Jabber */ | 1451 | PHY_M_IS_JABBER = 1<<0, /* Jabber */ |
1452 | }; | ||
1453 | 1452 | ||
1454 | #define PHY_M_DEF_MSK ( PHY_M_IS_AN_ERROR | PHY_M_IS_LSP_CHANGE | \ | 1453 | PHY_M_IS_DEF_MSK = PHY_M_IS_AN_ERROR | PHY_M_IS_LSP_CHANGE | |
1455 | PHY_M_IS_LST_CHANGE | PHY_M_IS_FIFO_ERROR) | 1454 | PHY_M_IS_LST_CHANGE | PHY_M_IS_FIFO_ERROR, |
1455 | |||
1456 | PHY_M_IS_AN_MSK = PHY_M_IS_AN_ERROR | PHY_M_IS_AN_COMPL, | ||
1457 | }; | ||
1456 | 1458 | ||
1457 | /***** PHY_MARV_EXT_CTRL 16 bit r/w Ext. PHY Specific Ctrl *****/ | 1459 | /***** PHY_MARV_EXT_CTRL 16 bit r/w Ext. PHY Specific Ctrl *****/ |
1458 | enum { | 1460 | enum { |