Inter-revision diff: patch 17

Comparing v1 (message) to v4 (message)

--- v1
+++ v4
@@ -1,26 +1,101 @@
 From: David Decotigny <decot@googlers.com>
+
+replaced by __ethtool_get_ksettings.
 
 Signed-off-by: David Decotigny <decot@googlers.com>
 ---
- drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
+ include/linux/ethtool.h |  4 ----
+ net/core/ethtool.c      | 45 ++++++++++++++-------------------------------
+ 2 files changed, 14 insertions(+), 35 deletions(-)
 
-diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
-index 944a112..96bf728 100644
---- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
-+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
-@@ -869,9 +869,11 @@ __printf(3, 4)
- void en_print(const char *level, const struct mlx4_en_priv *priv,
- 	      const char *format, ...);
+diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
+index 6077cbb..05d4f0e 100644
+--- a/include/linux/ethtool.h
++++ b/include/linux/ethtool.h
+@@ -148,10 +148,6 @@ struct ethtool_ksettings {
+ extern int __ethtool_get_ksettings(struct net_device *dev,
+ 				   struct ethtool_ksettings *ksettings);
  
-+#define en_dbg_enabled(mlevel, priv)		\
-+	(NETIF_MSG_##mlevel & (priv)->msg_enable)
- #define en_dbg(mlevel, priv, format, ...)				\
- do {									\
--	if (NETIF_MSG_##mlevel & (priv)->msg_enable)			\
-+	if (en_dbg_enabled(mlevel, priv))				\
- 		en_print(KERN_DEBUG, priv, format, ##__VA_ARGS__);	\
- } while (0)
- #define en_warn(priv, format, ...)					\
+-/* DEPRECATED, use __ethtool_get_ksettings */
+-extern int __ethtool_get_settings(struct net_device *dev,
+-				  struct ethtool_cmd *cmd);
+-
+ /**
+  * struct ethtool_ops - optional netdev operations
+  * @get_settings: DEPRECATED, use %get_ksettings/%set_ksettings
+diff --git a/net/core/ethtool.c b/net/core/ethtool.c
+index 4865031..84dca87 100644
+--- a/net/core/ethtool.c
++++ b/net/core/ethtool.c
+@@ -495,7 +495,12 @@ int __ethtool_get_ksettings(struct net_device *dev,
+ 	 * legacy %ethtool_cmd API, unless it's not supported either.
+ 	 * TODO: remove when ethtool_ops::get_settings disappears internally
+ 	 */
+-	err = __ethtool_get_settings(dev, &cmd);
++	if (!dev->ethtool_ops->get_settings)
++		return -EOPNOTSUPP;
++
++	memset(&cmd, 0, sizeof(cmd));
++	cmd.cmd = ETHTOOL_GSET;
++	err = dev->ethtool_ops->get_settings(dev, &cmd);
+ 	if (err < 0)
+ 		return err;
+ 
+@@ -652,30 +657,6 @@ static int ethtool_set_ksettings(struct net_device *dev, void __user *useraddr)
+ 	return dev->ethtool_ops->set_ksettings(dev, &ksettings);
+ }
+ 
+-/* Internal kernel helper to query a device ethtool_cmd settings.
+- *
+- * Note about transition to ethtool_settings API: We do not need (or
+- * want) this function to support "dev" instances that implement the
+- * ethtool_settings API as we will update the drivers calling this
+- * function to call __ethtool_get_ksettings instead, before the first
+- * drivers implement ethtool_ops::get_ksettings.
+- *
+- * TODO 1: at least make this function static when no driver is using it
+- * TODO 2: remove when ethtool_ops::get_settings disappears internally
+- */
+-int __ethtool_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
+-{
+-	ASSERT_RTNL();
+-
+-	if (!dev->ethtool_ops->get_settings)
+-		return -EOPNOTSUPP;
+-
+-	memset(cmd, 0, sizeof(struct ethtool_cmd));
+-	cmd->cmd = ETHTOOL_GSET;
+-	return dev->ethtool_ops->get_settings(dev, cmd);
+-}
+-EXPORT_SYMBOL(__ethtool_get_settings);
+-
+ static void
+ warn_incomplete_ethtool_legacy_settings_conversion(const char *details)
+ {
+@@ -717,16 +698,18 @@ static int ethtool_get_settings(struct net_device *dev, void __user *useraddr)
+ 		/* send a sensible cmd tag back to user */
+ 		cmd.cmd = ETHTOOL_GSET;
+ 	} else {
+-		int err;
+-		/* TODO: return -EOPNOTSUPP when
+-		 * ethtool_ops::get_settings disappears internally
+-		 */
+-
+ 		/* driver doesn't support %ethtool_ksettings
+ 		 * API. revert to legacy %ethtool_cmd API, unless it's
+ 		 * not supported either.
+ 		 */
+-		err = __ethtool_get_settings(dev, &cmd);
++		int err;
++
++		if (!dev->ethtool_ops->get_settings)
++			return -EOPNOTSUPP;
++
++		memset(&cmd, 0, sizeof(cmd));
++		cmd.cmd = ETHTOOL_GSET;
++		err = dev->ethtool_ops->get_settings(dev, &cmd);
+ 		if (err < 0)
+ 			return err;
+ 	}
 -- 
-2.2.0.rc0.207.ga3a616c
+2.6.0.rc2.230.g3dd15c0
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help