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

Commit 21d529d5 authored by Jakub Kicinski's avatar Jakub Kicinski Committed by David S. Miller
Browse files

nfp: report link speed from NSP



On the PF prefer the link speed value provided by the NSP.
Refresh port table if needed.

Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: default avatarSimon Horman <simon.horman@netronome.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 172f638c
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@
#include <linux/ethtool.h>

#include "nfpcore/nfp.h"
#include "nfpcore/nfp_nsp_eth.h"
#include "nfp_net_ctrl.h"
#include "nfp_net.h"

@@ -205,6 +206,16 @@ nfp_net_get_link_ksettings(struct net_device *netdev,
	if (!netif_carrier_ok(netdev))
		return 0;

	/* Use link speed from ETH table if available, otherwise try the BAR */
	if (nn->eth_port && nfp_net_link_changed_read_clear(nn))
		nfp_net_refresh_port_config(nn);
	/* Separate if - on FW error the port could've disappeared from table */
	if (nn->eth_port) {
		cmd->base.speed = nn->eth_port->speed;
		cmd->base.duplex = DUPLEX_FULL;
		return 0;
	}

	sts = nn_readl(nn, NFP_NET_CFG_STS);

	ls = FIELD_GET(NFP_NET_CFG_STS_LINK_RATE, sts);