Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f55744ad authored by Antoine Tenart's avatar Antoine Tenart Committed by David S. Miller
Browse files

net: mvpp2: improve the link management function



When the link status changes, the phylib calls the link_event function
in the mvpp2 driver. Before this patch only the egress/ingress transmit
was enabled/disabled. This patch adds more functionality to the link
status management code by enabling/disabling the port per-cpu
interrupts, and the port itself. The queues are now stopped as well, and
the netif carrier helpers are called.

Signed-off-by: default avatarAntoine Tenart <antoine.tenart@free-electrons.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 968b211c
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -5777,14 +5777,25 @@ static void mvpp2_link_event(struct net_device *dev)
			val |= (MVPP2_GMAC_FORCE_LINK_PASS |
				MVPP2_GMAC_FORCE_LINK_DOWN);
			writel(val, port->base + MVPP2_GMAC_AUTONEG_CONFIG);

			mvpp2_interrupts_enable(port);
			mvpp2_port_enable(port);

			mvpp2_egress_enable(port);
			mvpp2_ingress_enable(port);
			netif_carrier_on(dev);
			netif_tx_wake_all_queues(dev);
		} else {
			port->duplex = -1;
			port->speed = 0;

			netif_tx_stop_all_queues(dev);
			netif_carrier_off(dev);
			mvpp2_ingress_disable(port);
			mvpp2_egress_disable(port);

			mvpp2_port_disable(port);
			mvpp2_interrupts_disable(port);
		}

		phy_print_status(phydev);