Re: [PATCH 1/2] ptp_clock: allow for it to be optional

2016-09-19 Thread Eugenia Emantayev
Reviewed-by: Eugenia Emantayev <euge...@mellanox.com>


Re: [PATCH net-next v6 19/19] net: mlx4: use new ETHTOOL_G/SSETTINGS API

2016-01-28 Thread Eugenia Emantayev
e(ksettings, supported, FIBRE);
> +   ethtool_ksettings_add_link_mode(ksettings, advertising, 
> FIBRE);
> } else if (trans_type == 0x80 || trans_type == 0) {
> -   cmd->port = PORT_TP;
> -   cmd->transceiver = XCVR_INTERNAL;
> -   cmd->supported |= SUPPORTED_TP;
> -   cmd->advertising |= ADVERTISED_TP;
> +   ksettings->parent.port = PORT_TP;
> +   ethtool_ksettings_add_link_mode(ksettings, supported, TP);
> +   ethtool_ksettings_add_link_mode(ksettings, advertising, TP);
> } else  {
> -   cmd->port = -1;
> -   cmd->transceiver = -1;
> +   ksettings->parent.port = -1;
> }
>  }
>
> -static int mlx4_en_get_settings(struct net_device *dev, struct ethtool_cmd 
> *cmd)
> +static int mlx4_en_get_ksettings(struct net_device *dev,
> +struct ethtool_ksettings *ksettings)
>  {
> struct mlx4_en_priv *priv = netdev_priv(dev);
> int ret = -EINVAL;
> @@ -822,16 +821,16 @@ static int mlx4_en_get_settings(struct net_device *dev, 
> struct ethtool_cmd *cmd)
>priv->port_state.flags & MLX4_EN_PORT_ANE);
>
> if (priv->mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_ETH_PROT_CTRL)
> -   ret = ethtool_get_ptys_settings(dev, cmd);
> +   ret = ethtool_get_ptys_ksettings(dev, ksettings);
> if (ret) /* ETH PROT CRTL is not supported or PTYS CMD failed */
> -   ethtool_get_default_settings(dev, cmd);
> +   ethtool_get_default_ksettings(dev, ksettings);
>
> if (netif_carrier_ok(dev)) {
> -   ethtool_cmd_speed_set(cmd, priv->port_state.link_speed);
> -   cmd->duplex = DUPLEX_FULL;
> +   ksettings->parent.speed = priv->port_state.link_speed;
> +   ksettings->parent.duplex = DUPLEX_FULL;
> } else {
> -   ethtool_cmd_speed_set(cmd, SPEED_UNKNOWN);
> -   cmd->duplex = DUPLEX_UNKNOWN;
> +   ksettings->parent.speed = SPEED_UNKNOWN;
> +   ksettings->parent.duplex = DUPLEX_UNKNOWN;
> }
> return 0;
>  }
> @@ -855,21 +854,28 @@ static __be32 speed_set_ptys_admin(struct mlx4_en_priv 
> *priv, u32 speed,
> return proto_admin;
>  }
>
> -static int mlx4_en_set_settings(struct net_device *dev, struct ethtool_cmd 
> *cmd)
> +static int mlx4_en_set_ksettings(struct net_device *dev,
> +const struct ethtool_ksettings *ksettings)
>  {
> struct mlx4_en_priv *priv = netdev_priv(dev);
> struct mlx4_ptys_reg ptys_reg;
> __be32 proto_admin;
> int ret;
>
> -   u32 ptys_adv = ethtool2ptys_link_modes(cmd->advertising, ADVERTISED);
> -   int speed = ethtool_cmd_speed(cmd);
> +   u32 ptys_adv = ethtool2ptys_link_modes(
> +   ksettings->link_modes.advertising, ADVERTISED);
> +   const int speed = ksettings->parent.speed;
>
> -   en_dbg(DRV, priv, "Set Speed=%d adv=0x%x autoneg=%d duplex=%d\n",
> -  speed, cmd->advertising, cmd->autoneg, cmd->duplex);
> +   if (en_dbg_enabled(DRV, priv)) {
> +   en_dbg(DRV, priv,
> +  "Set Speed=%d adv={%*pbl} autoneg=%d duplex=%d\n",
> +  speed, __ETHTOOL_LINK_MODE_MASK_NBITS,
> +  ksettings->link_modes.advertising,
> +  ksettings->parent.autoneg, ksettings->parent.duplex);
> +   }
>
> if (!(priv->mdev->dev->caps.flags2 & 
> MLX4_DEV_CAP_FLAG2_ETH_PROT_CTRL) ||
> -   (cmd->duplex == DUPLEX_HALF))
> +   (ksettings->parent.duplex == DUPLEX_HALF))
> return -EINVAL;
>
> memset(_reg, 0, sizeof(ptys_reg));
> @@ -883,7 +889,7 @@ static int mlx4_en_set_settings(struct net_device *dev, 
> struct ethtool_cmd *cmd)
>     return 0;
> }
>
> -   proto_admin = cmd->autoneg == AUTONEG_ENABLE ?
> +   proto_admin = ksettings->parent.autoneg == AUTONEG_ENABLE ?
> cpu_to_be32(ptys_adv) :
> speed_set_ptys_admin(priv, speed,
>  ptys_reg.eth_proto_cap);
> @@ -1982,8 +1988,8 @@ static int mlx4_en_set_phys_id(struct net_device *dev,
>
>  const struct ethtool_ops mlx4_en_ethtool_ops = {
> .get_drvinfo = mlx4_en_get_drvinfo,
> -   .get_settings = mlx4_en_get_settings,
> -   .set_settings = mlx4_en_set_settings,
> +   .get_ksettings = mlx4_en_get_ksettings,
> +   .set_ksettings = mlx4_en_set_ksettings,
> .get_link = ethtool_op_get_link,
> .get_strings = mlx4_en_get_strings,
> .get_sset_count = mlx4_en_get_sset_count,
> diff --git a/drivers/net/ethernet/mellanox/mlx4/en_main.c 
> b/drivers/net/ethernet/mellanox/mlx4/en_main.c
> index e0ec280..bf7628d 100644
> --- a/drivers/net/ethernet/mellanox/mlx4/en_main.c
> +++ b/drivers/net/ethernet/mellanox/mlx4/en_main.c
> @@ -382,6 +382,7 @@ static void mlx4_en_verify_params(void)
>  static int __init mlx4_en_init(void)
>  {
> mlx4_en_verify_params();
> +   mlx4_en_init_ptys2ethtool_map();
>
> return mlx4_register_interface(_en_interface);
>  }
> diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h 
> b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
> index b04054d..2d8af43 100644
> --- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
> +++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
> @@ -607,6 +607,7 @@ static inline struct mlx4_cqe *mlx4_en_get_cqe(void *buf, 
> int idx, int cqe_sz)
>
>  #define MLX4_EN_WOL_DO_MODIFY (1ULL << 63)
>
> +void mlx4_en_init_ptys2ethtool_map(void);
>  void mlx4_en_update_loopback_state(struct net_device *dev,
>netdev_features_t features);
>
> --
> 2.7.0.rc3.207.g0ac5344
>

Acked-by: Eugenia Emantayev <euge...@mellanox.com>