bonding: use ethtool for link checking first
This patch only changes the order of interfaces to use for checking slave link status in bond_check_dev_link() to priorize ethtool interface. Should safe some troubles as ethtool seems to be more supported. Jirka Signed-off-by: Jiri Pirko <jpirko@redhat.com> drivers/net/bonding/bond_main.c | 26 ++++++++++++-------------- 1 files changed, 12 insertions(+), 14 deletions(-) Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
434e7b0d12
commit
29112f4e24
@@ -695,6 +695,18 @@ static int bond_check_dev_link(struct bonding *bond, struct net_device *slave_de
|
|||||||
if (bond->params.use_carrier)
|
if (bond->params.use_carrier)
|
||||||
return netif_carrier_ok(slave_dev) ? BMSR_LSTATUS : 0;
|
return netif_carrier_ok(slave_dev) ? BMSR_LSTATUS : 0;
|
||||||
|
|
||||||
|
/* Try to get link status using Ethtool first. */
|
||||||
|
if (slave_dev->ethtool_ops) {
|
||||||
|
if (slave_dev->ethtool_ops->get_link) {
|
||||||
|
u32 link;
|
||||||
|
|
||||||
|
link = slave_dev->ethtool_ops->get_link(slave_dev);
|
||||||
|
|
||||||
|
return link ? BMSR_LSTATUS : 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ethtool can't be used, fallback to MII ioclts. */
|
||||||
ioctl = slave_ops->ndo_do_ioctl;
|
ioctl = slave_ops->ndo_do_ioctl;
|
||||||
if (ioctl) {
|
if (ioctl) {
|
||||||
/* TODO: set pointer to correct ioctl on a per team member */
|
/* TODO: set pointer to correct ioctl on a per team member */
|
||||||
@@ -720,20 +732,6 @@ static int bond_check_dev_link(struct bonding *bond, struct net_device *slave_de
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Some drivers cache ETHTOOL_GLINK for a period of time so we only
|
|
||||||
* attempt to get link status from it if the above MII ioctls fail.
|
|
||||||
*/
|
|
||||||
if (slave_dev->ethtool_ops) {
|
|
||||||
if (slave_dev->ethtool_ops->get_link) {
|
|
||||||
u32 link;
|
|
||||||
|
|
||||||
link = slave_dev->ethtool_ops->get_link(slave_dev);
|
|
||||||
|
|
||||||
return link ? BMSR_LSTATUS : 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If reporting, report that either there's no dev->do_ioctl,
|
* If reporting, report that either there's no dev->do_ioctl,
|
||||||
* or both SIOCGMIIREG and get_link failed (meaning that we
|
* or both SIOCGMIIREG and get_link failed (meaning that we
|
||||||
|
Reference in New Issue
Block a user