lkml.org 
[lkml]   [2016]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/3] ethtool: Add common functions for get and set settings
    Date
    Currently, most drivers only support get and set PHY settings
    by PHY ethtool API. For those drivers, it's better to
    supply common functions for get_settings and set_settings.
    This patch adds common functions implementation.

    Reviewed-by: Jiancheng Xue <xuejiancheng@hisilicon.com>
    Signed-off-by: Dongpo Li <lidongpo@hisilicon.com>
    ---
    include/linux/ethtool.h | 2 ++
    net/core/ethtool.c | 21 +++++++++++++++++++++
    2 files changed, 23 insertions(+)

    diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
    index 9ded8c6..e114db9 100644
    --- a/include/linux/ethtool.h
    +++ b/include/linux/ethtool.h
    @@ -82,6 +82,8 @@ struct net_device;
    /* Some generic methods drivers may use in their ethtool_ops */
    u32 ethtool_op_get_link(struct net_device *dev);
    int ethtool_op_get_ts_info(struct net_device *dev, struct ethtool_ts_info *eti);
    +int ethtool_op_get_settings(struct net_device *dev, struct ethtool_cmd *cmd);
    +int ethtool_op_set_settings(struct net_device *dev, struct ethtool_cmd *cmd);

    /**
    * ethtool_rxfh_indir_default - get default value for RX flow hash indirection
    diff --git a/net/core/ethtool.c b/net/core/ethtool.c
    index f403481..270b6d1 100644
    --- a/net/core/ethtool.c
    +++ b/net/core/ethtool.c
    @@ -50,6 +50,27 @@ int ethtool_op_get_ts_info(struct net_device *dev, struct ethtool_ts_info *info)
    }
    EXPORT_SYMBOL(ethtool_op_get_ts_info);

    +int ethtool_op_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
    +{
    + if (!dev->phydev)
    + return -ENODEV;
    +
    + return phy_ethtool_gset(dev->phydev, cmd);
    +}
    +EXPORT_SYMBOL(ethtool_op_get_settings);
    +
    +int ethtool_op_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
    +{
    + if (!capable(CAP_NET_ADMIN))
    + return -EPERM;
    +
    + if (!dev->phydev)
    + return -ENODEV;
    +
    + return phy_ethtool_sset(dev->phydev, cmd);
    +}
    +EXPORT_SYMBOL(ethtool_op_set_settings);
    +
    /* Handlers for each ethtool command */

    #define ETHTOOL_DEV_FEATURE_WORDS ((NETDEV_FEATURE_COUNT + 31) / 32)
    --
    2.8.2
    \
     
     \ /
      Last update: 2016-06-13 08:41    [W:8.018 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site