summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/netronome/nfp/nfp_port.c
diff options
context:
space:
mode:
authorJakub Kicinski2017-05-22 19:59:34 +0200
committerDavid S. Miller2017-05-22 20:59:06 +0200
commit1876749da87500c7228f91398e04291389a18634 (patch)
tree93b886c2f25aa4b3e8fb6d9878bd1658ceafecf3 /drivers/net/ethernet/netronome/nfp/nfp_port.c
parentnfp: mark port state as stale if update failed (diff)
downloadkernel-qcow2-linux-1876749da87500c7228f91398e04291389a18634.tar.gz
kernel-qcow2-linux-1876749da87500c7228f91398e04291389a18634.tar.xz
kernel-qcow2-linux-1876749da87500c7228f91398e04291389a18634.zip
nfp: refresh port state before reporting autonegotiation
State of autonegotiation may have changed but is not yet refreshed. Make sure ethtool respects the NFP_PORT_CHANGED flag when looking at autoneg. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Simon Horman <simon.horman@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/netronome/nfp/nfp_port.c')
-rw-r--r--drivers/net/ethernet/netronome/nfp/nfp_port.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_port.c b/drivers/net/ethernet/netronome/nfp/nfp_port.c
index 295db04ccb05..3beed4167e2f 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_port.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_port.c
@@ -58,6 +58,18 @@ struct nfp_eth_table_port *__nfp_port_get_eth_port(struct nfp_port *port)
return port->eth_port;
}
+struct nfp_eth_table_port *nfp_port_get_eth_port(struct nfp_port *port)
+{
+ if (!__nfp_port_get_eth_port(port))
+ return NULL;
+
+ if (test_bit(NFP_PORT_CHANGED, &port->flags))
+ if (nfp_net_refresh_eth_port(port))
+ return NULL;
+
+ return __nfp_port_get_eth_port(port);
+}
+
int
nfp_port_get_phys_port_name(struct net_device *netdev, char *name, size_t len)
{