bond: add support to read speed and duplex via ethtool
authorAndy Gospodarek <andy@greyhouse.net>
Tue, 16 Apr 2013 14:46:00 +0000 (14:46 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 19 Apr 2013 20:39:50 +0000 (16:39 -0400)
commitbb5b052f751b309b5181686741c724a66c5cb15a
tree5a5e8a92b9095ba0181929400353ddbd9d735711
parent4b457bdf1dbc961b62252034b05d47ec3e5b85d2
bond: add support to read speed and duplex via ethtool

This patch adds support for the get_settings ethtool op to the bonding
driver.  This was motivated by users who wanted to get the speed of the
bond and compare that against throughput to understand utilization.
The behavior before this patch was added was problematic when computing
line utilization after trying to get link-speed and throughput via SNMP.

Output from ethtool looks like this for a round-robin bond:

Settings for bond0:
Supported ports: [ ]
Supported link modes:   Not reported
Supported pause frame use: No
Supports auto-negotiation: No
Advertised link modes:  Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Speed: 11000Mb/s
Duplex: Full
Port: Other
PHYAD: 0
Transceiver: internal
Auto-negotiation: off
MDI-X: Unknown
Link detected: yes

I tested this and verified it works as expected.  A test was also done
on a version backported to an older kernel and it worked well there.

v2: Switch to using ethtool_cmd_speed_set to set speed, added check to
SLAVE_IS_OK for each slave in bond, dropped mode-specific calculations
as they were not needed, and set port type to 'Other.'

v3: Fix useless assignment and checkpatch warning.

Signed-off-by: Andy Gospodarek <andy@greyhouse.net>
Reviewed-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_main.c