diff options
Diffstat (limited to 'drivers/net/sfc/mdio_10g.c')
-rw-r--r-- | drivers/net/sfc/mdio_10g.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/net/sfc/mdio_10g.c b/drivers/net/sfc/mdio_10g.c index b355872de6c2..25fb20adf4b7 100644 --- a/drivers/net/sfc/mdio_10g.c +++ b/drivers/net/sfc/mdio_10g.c | |||
@@ -341,10 +341,14 @@ int efx_mdio_set_settings(struct efx_nic *efx, struct ethtool_cmd *ecmd) | |||
341 | 341 | ||
342 | enum efx_fc_type efx_mdio_get_pause(struct efx_nic *efx) | 342 | enum efx_fc_type efx_mdio_get_pause(struct efx_nic *efx) |
343 | { | 343 | { |
344 | int lpa; | 344 | BUILD_BUG_ON(EFX_FC_AUTO & (EFX_FC_RX | EFX_FC_TX)); |
345 | 345 | ||
346 | if (!(efx->phy_op->mmds & MDIO_DEVS_AN)) | 346 | if (!(efx->wanted_fc & EFX_FC_AUTO)) |
347 | return efx->wanted_fc; | 347 | return efx->wanted_fc; |
348 | lpa = efx_mdio_read(efx, MDIO_MMD_AN, MDIO_AN_LPA); | 348 | |
349 | return efx_fc_resolve(efx->wanted_fc, lpa); | 349 | WARN_ON(!(efx->mdio.mmds & MDIO_DEVS_AN)); |
350 | |||
351 | return mii_resolve_flowctrl_fdx( | ||
352 | mii_advertise_flowctrl(efx->wanted_fc), | ||
353 | efx_mdio_read(efx, MDIO_MMD_AN, MDIO_AN_LPA)); | ||
350 | } | 354 | } |