diff options
author | Jakub Kicinski | 2017-05-22 19:59:34 +0200 |
---|---|---|
committer | David S. Miller | 2017-05-22 20:59:06 +0200 |
commit | 1876749da87500c7228f91398e04291389a18634 (patch) | |
tree | 93b886c2f25aa4b3e8fb6d9878bd1658ceafecf3 /drivers/net/ethernet/netronome/nfp/nfp_port.c | |
parent | nfp: mark port state as stale if update failed (diff) | |
download | kernel-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.c | 12 |
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) { |