forked from Minki/linux
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:
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)
|
||||
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;
|
||||
if (ioctl) {
|
||||
/* 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,
|
||||
* or both SIOCGMIIREG and get_link failed (meaning that we
|
||||
|
Loading…
Reference in New Issue
Block a user