diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c index 23f9ea0f89822ecc58cc3ffe1f8bc35e60f0d7d1..84fdbc4b835b917711b20a6fa7c263425c5cb5cb 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c @@ -209,7 +209,7 @@ nfp_net_get_link_ksettings(struct net_device *netdev, cmd->base.duplex = DUPLEX_UNKNOWN; port = nfp_port_from_netdev(netdev); - eth_port = __nfp_port_get_eth_port(port); + eth_port = nfp_port_get_eth_port(port); if (eth_port) cmd->base.autoneg = eth_port->aneg != NFP_ANEG_DISABLED ? AUTONEG_ENABLE : AUTONEG_DISABLE; @@ -219,14 +219,6 @@ nfp_net_get_link_ksettings(struct net_device *netdev, /* Use link speed from ETH table if available, otherwise try the BAR */ if (eth_port) { - int err; - - if (test_bit(NFP_PORT_CHANGED, &port->flags)) { - err = nfp_net_refresh_eth_port(port); - if (err) - return err; - } - cmd->base.port = eth_port->port_type; cmd->base.speed = eth_port->speed; cmd->base.duplex = DUPLEX_FULL; diff --git a/drivers/net/ethernet/netronome/nfp/nfp_port.c b/drivers/net/ethernet/netronome/nfp/nfp_port.c index 295db04ccb053aa8b78f22405104e9d02ee2c16b..3beed4167e2ffd9a75b5bad8ff151520a649fd2f 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) { diff --git a/drivers/net/ethernet/netronome/nfp/nfp_port.h b/drivers/net/ethernet/netronome/nfp/nfp_port.h index 471fff1fc58fb8e2416babdc73379e0bf42dd453..641617de41cce4c291bb26b264d86807a33c146e 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_port.h +++ b/drivers/net/ethernet/netronome/nfp/nfp_port.h @@ -86,6 +86,7 @@ struct nfp_port { struct nfp_port *nfp_port_from_netdev(struct net_device *netdev); struct nfp_eth_table_port *__nfp_port_get_eth_port(struct nfp_port *port); +struct nfp_eth_table_port *nfp_port_get_eth_port(struct nfp_port *port); int nfp_port_get_phys_port_name(struct net_device *netdev, char *name, size_t len);