From: Anant Gole <[EMAIL PROTECTED]>
The module parameters for speed and duplex were not being honoured
due to a coding bug resulting into auto negotiation all the time.
Signed-off-by: Anant Gole <[EMAIL PROTECTED]>
---
drivers/net/davinci_emac.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
Index: linux-davinci-2.6/drivers/net/davinci_emac.c
===================================================================
--- linux-davinci-2.6.orig/drivers/net/davinci_emac.c
+++ linux-davinci-2.6/drivers/net/davinci_emac.c
@@ -893,7 +893,7 @@ static void emac_set_phymode(struct emac
priv->speed = EMAC_SPEED_AUTO;
priv->duplex = EMAC_DUPLEX_UNKNOWN;
phy_mode = NWAY_AUTO_ALL;
- } else if (EMAC_SPEED_10MBPS == priv->speed) {
+ } else if (EMAC_SPEED_10MBPS == cfg_link_speed) {
/* Check if bus speed allows 10mbps */
if (priv->mdio.mdio_bus_frequency <=
EMAC_MIN_FREQUENCY_FOR_10MBPS) {
@@ -905,14 +905,14 @@ static void emac_set_phymode(struct emac
}
}
priv->speed = EMAC_SPEED_10MBPS;
- if (EMAC_DUPLEX_HALF == priv->duplex) {
+ if (EMAC_DUPLEX_HALF == cfg_link_duplex) {
phy_mode = NWAY_HD10;
priv->duplex = EMAC_DUPLEX_HALF;
} else {
phy_mode = NWAY_FD10;
priv->duplex = EMAC_DUPLEX_FULL;
}
- } else if (EMAC_SPEED_100MBPS == priv->speed) {
+ } else if (EMAC_SPEED_100MBPS == cfg_link_speed) {
if (priv->mdio.mdio_bus_frequency <=
EMAC_MIN_FREQUENCY_FOR_100MBPS) {
if (netif_msg_drv(priv)) {
@@ -924,17 +924,21 @@ static void emac_set_phymode(struct emac
}
}
priv->speed = EMAC_SPEED_100MBPS;
- if (EMAC_DUPLEX_HALF == priv->duplex) {
+ if (EMAC_DUPLEX_HALF == cfg_link_duplex) {
phy_mode = NWAY_HD100;
priv->duplex = EMAC_DUPLEX_HALF;
} else {
phy_mode = NWAY_FD100;
priv->duplex = EMAC_DUPLEX_FULL;
}
- } else if (EMAC_SPEED_1GBPS == priv->speed) {
+ } else if (EMAC_SPEED_1GBPS == cfg_link_speed) {
phy_mode = NWAY_AUTO_ALL; /* Temporarily */
+ priv->speed = EMAC_SPEED_AUTO;
+ priv->duplex = EMAC_DUPLEX_UNKNOWN;
} else {
phy_mode = NWAY_AUTO_ALL; /* Fall back if wrong params set */
+ priv->speed = EMAC_SPEED_AUTO;
+ priv->duplex = EMAC_DUPLEX_UNKNOWN;
}
emac_mdio_set_phy_mode(phy_mode);
emac_update_phystatus(priv);
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source