net: axienet: use resolved link config in mac_link_up()
authorRussell King <rmk+kernel@armlinux.org.uk>
Wed, 26 Feb 2020 10:23:56 +0000 (10:23 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 27 Feb 2020 20:02:14 +0000 (12:02 -0800)
Convert the Xilinx AXI ethernet driver to use the finalised link
parameters in mac_link_up() rather than the parameters in mac_config().

Tested-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/xilinx/xilinx_axienet_main.c

index 197740781157ffdbc77a28a116e4ea440af9269d..c2f4c5ca2e80d7a6a3340f875f33e11cdba0bc73 100644 (file)
@@ -1440,6 +1440,22 @@ static void axienet_mac_an_restart(struct phylink_config *config)
 
 static void axienet_mac_config(struct phylink_config *config, unsigned int mode,
                               const struct phylink_link_state *state)
+{
+       /* nothing meaningful to do */
+}
+
+static void axienet_mac_link_down(struct phylink_config *config,
+                                 unsigned int mode,
+                                 phy_interface_t interface)
+{
+       /* nothing meaningful to do */
+}
+
+static void axienet_mac_link_up(struct phylink_config *config,
+                               struct phy_device *phy,
+                               unsigned int mode, phy_interface_t interface,
+                               int speed, int duplex,
+                               bool tx_pause, bool rx_pause)
 {
        struct net_device *ndev = to_net_dev(config->dev);
        struct axienet_local *lp = netdev_priv(ndev);
@@ -1448,7 +1464,7 @@ static void axienet_mac_config(struct phylink_config *config, unsigned int mode,
        emmc_reg = axienet_ior(lp, XAE_EMMC_OFFSET);
        emmc_reg &= ~XAE_EMMC_LINKSPEED_MASK;
 
-       switch (state->speed) {
+       switch (speed) {
        case SPEED_1000:
                emmc_reg |= XAE_EMMC_LINKSPD_1000;
                break;
@@ -1467,33 +1483,17 @@ static void axienet_mac_config(struct phylink_config *config, unsigned int mode,
        axienet_iow(lp, XAE_EMMC_OFFSET, emmc_reg);
 
        fcc_reg = axienet_ior(lp, XAE_FCC_OFFSET);
-       if (state->pause & MLO_PAUSE_TX)
+       if (tx_pause)
                fcc_reg |= XAE_FCC_FCTX_MASK;
        else
                fcc_reg &= ~XAE_FCC_FCTX_MASK;
-       if (state->pause & MLO_PAUSE_RX)
+       if (rx_pause)
                fcc_reg |= XAE_FCC_FCRX_MASK;
        else
                fcc_reg &= ~XAE_FCC_FCRX_MASK;
        axienet_iow(lp, XAE_FCC_OFFSET, fcc_reg);
 }
 
-static void axienet_mac_link_down(struct phylink_config *config,
-                                 unsigned int mode,
-                                 phy_interface_t interface)
-{
-       /* nothing meaningful to do */
-}
-
-static void axienet_mac_link_up(struct phylink_config *config,
-                               struct phy_device *phy,
-                               unsigned int mode, phy_interface_t interface,
-                               int speed, int duplex,
-                               bool tx_pause, bool rx_pause)
-{
-       /* nothing meaningful to do */
-}
-
 static const struct phylink_mac_ops axienet_phylink_ops = {
        .validate = axienet_validate,
        .mac_pcs_get_state = axienet_mac_pcs_get_state,