diff options
author | Jiri Pirko <jpirko@redhat.com> | 2011-09-02 23:34:30 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-09-15 17:32:26 -0400 |
commit | 4bc71cb983fd2844e603bf633df2bb53385182d2 (patch) | |
tree | 067b6df32fda6c554b2b9263a94a585c2e5a832d /include/linux | |
parent | c5dac7c9984d8a034eb7ae149cedf23ec9259f98 (diff) |
net: consolidate and fix ethtool_ops->get_settings calling
This patch does several things:
- introduces __ethtool_get_settings which is called from ethtool code and
from drivers as well. Put ASSERT_RTNL there.
- dev_ethtool_get_settings() is replaced by __ethtool_get_settings()
- changes calling in drivers so rtnl locking is respected. In
iboe_get_rate was previously ->get_settings() called unlocked. This
fixes it. Also prb_calc_retire_blk_tmo() in af_packet.c had the same
problem. Also fixed by calling __dev_get_by_index() instead of
dev_get_by_index() and holding rtnl_lock for both calls.
- introduces rtnl_lock in bnx2fc_vport_create() and fcoe_vport_create()
so bnx2fc_if_create() and fcoe_if_create() are called locked as they
are from other places.
- use __ethtool_get_settings() in bonding code
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
v2->v3:
-removed dev_ethtool_get_settings()
-added ASSERT_RTNL into __ethtool_get_settings()
-prb_calc_retire_blk_tmo - use __dev_get_by_index() and lock
around it and __ethtool_get_settings() call
v1->v2:
add missing export_symbol
Reviewed-by: Ben Hutchings <bhutchings@solarflare.com> [except FCoE bits]
Acked-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/ethtool.h | 3 | ||||
-rw-r--r-- | include/linux/netdevice.h | 3 |
2 files changed, 3 insertions, 3 deletions
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index 3829712ccc05..8571f18c38a6 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h | |||
@@ -728,6 +728,9 @@ enum ethtool_sfeatures_retval_bits { | |||
728 | /* needed by dev_disable_lro() */ | 728 | /* needed by dev_disable_lro() */ |
729 | extern int __ethtool_set_flags(struct net_device *dev, u32 flags); | 729 | extern int __ethtool_set_flags(struct net_device *dev, u32 flags); |
730 | 730 | ||
731 | extern int __ethtool_get_settings(struct net_device *dev, | ||
732 | struct ethtool_cmd *cmd); | ||
733 | |||
731 | /** | 734 | /** |
732 | * enum ethtool_phys_id_state - indicator state for physical identification | 735 | * enum ethtool_phys_id_state - indicator state for physical identification |
733 | * @ETHTOOL_ID_INACTIVE: Physical ID indicator should be deactivated | 736 | * @ETHTOOL_ID_INACTIVE: Physical ID indicator should be deactivated |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 0a7f619f284e..43b32983ba10 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -2589,9 +2589,6 @@ static inline int netif_is_bond_slave(struct net_device *dev) | |||
2589 | 2589 | ||
2590 | extern struct pernet_operations __net_initdata loopback_net_ops; | 2590 | extern struct pernet_operations __net_initdata loopback_net_ops; |
2591 | 2591 | ||
2592 | int dev_ethtool_get_settings(struct net_device *dev, | ||
2593 | struct ethtool_cmd *cmd); | ||
2594 | |||
2595 | static inline u32 dev_ethtool_get_rx_csum(struct net_device *dev) | 2592 | static inline u32 dev_ethtool_get_rx_csum(struct net_device *dev) |
2596 | { | 2593 | { |
2597 | if (dev->features & NETIF_F_RXCSUM) | 2594 | if (dev->features & NETIF_F_RXCSUM) |