mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 15:12:13 +02:00
net: phylink: validate sfp_select_interface() returned interface
Validate that the returned interface from sfp_select_interface() is supportable by the MAC/PCS. If it isn't, print an error and return the NA interface type. This is a preparatory step to reorganising how a PHY on a SFP module is handled. Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Tested-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Link: https://patch.msgid.link/E1t3bcV-000c8B-Vz@rmk-PC.armlinux.org.uk Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
280ed44982
commit
41caa7e81b
|
|
@ -2414,11 +2414,22 @@ static phy_interface_t phylink_sfp_select_interface(struct phylink *pl,
|
|||
phy_interface_t interface;
|
||||
|
||||
interface = sfp_select_interface(pl->sfp_bus, link_modes);
|
||||
if (interface == PHY_INTERFACE_MODE_NA)
|
||||
if (interface == PHY_INTERFACE_MODE_NA) {
|
||||
phylink_err(pl,
|
||||
"selection of interface failed, advertisement %*pb\n",
|
||||
__ETHTOOL_LINK_MODE_MASK_NBITS,
|
||||
link_modes);
|
||||
return interface;
|
||||
}
|
||||
|
||||
if (!test_bit(interface, pl->config->supported_interfaces)) {
|
||||
phylink_err(pl,
|
||||
"selection of interface failed, SFP selected %s (%u) but MAC supports %*pbl\n",
|
||||
phy_modes(interface), interface,
|
||||
(int)PHY_INTERFACE_MODE_MAX,
|
||||
pl->config->supported_interfaces);
|
||||
return PHY_INTERFACE_MODE_NA;
|
||||
}
|
||||
|
||||
return interface;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user