Commit 704438dd authored by Maksym Glubokiy's avatar Maksym Glubokiy Committed by David S. Miller
Browse files

net: prestera: cache port state for non-phylink ports too



Port event data must stored to port-state cache regardless of whether
the port uses phylink or not since this data is used by ethtool.

Fixes: 52323ef7 ("net: marvell: prestera: add phylink support")
Signed-off-by: default avatarOleksandr Mazur <oleksandr.mazur@plvision.eu>
Signed-off-by: default avatarMaksym Glubokiy <maksym.glubokiy@plvision.eu>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 105b0468
Loading
Loading
Loading
Loading
+17 −19
Original line number Diff line number Diff line
@@ -797,7 +797,6 @@ static void prestera_port_handle_event(struct prestera_switch *sw,

		caching_dw = &port->cached_hw_stats.caching_dw;

		if (port->phy_link) {
		memset(&smac, 0, sizeof(smac));
		smac.valid = true;
		smac.oper = pevt->data.mac.oper;
@@ -807,22 +806,21 @@ static void prestera_port_handle_event(struct prestera_switch *sw,
			smac.duplex = pevt->data.mac.duplex;
			smac.fc = pevt->data.mac.fc;
			smac.fec = pevt->data.mac.fec;
				phylink_mac_change(port->phy_link, true);
			} else {
				phylink_mac_change(port->phy_link, false);
		}
		prestera_port_mac_state_cache_write(port, &smac);
		}

		if (port->state_mac.oper) {
			if (!port->phy_link)
			if (port->phy_link)
				phylink_mac_change(port->phy_link, true);
			else
				netif_carrier_on(port->dev);

			if (!delayed_work_pending(caching_dw))
				queue_delayed_work(prestera_wq, caching_dw, 0);
		} else if (netif_running(port->dev) &&
			   netif_carrier_ok(port->dev)) {
			if (!port->phy_link)
		} else {
			if (port->phy_link)
				phylink_mac_change(port->phy_link, false);
			else if (netif_running(port->dev) && netif_carrier_ok(port->dev))
				netif_carrier_off(port->dev);

			if (delayed_work_pending(caching_dw))