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

Reply via email to