mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 07:33:19 +02:00
net/mlx5e: Ethtool steering, move ethtool callbacks
Move ethool rxnfc callback into en_fs_etthool file where they belong. This will allow us to make many ethtool fs related helper functions static. Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
parent
974ce34a0c
commit
cff2b1e3e8
|
|
@ -912,16 +912,11 @@ void mlx5e_destroy_flow_table(struct mlx5e_flow_table *ft);
|
|||
int mlx5e_self_test_num(struct mlx5e_priv *priv);
|
||||
void mlx5e_self_test(struct net_device *ndev, struct ethtool_test *etest,
|
||||
u64 *buf);
|
||||
int mlx5e_ethtool_get_flow(struct mlx5e_priv *priv, struct ethtool_rxnfc *info,
|
||||
int location);
|
||||
int mlx5e_ethtool_get_all_flows(struct mlx5e_priv *priv,
|
||||
struct ethtool_rxnfc *info, u32 *rule_locs);
|
||||
int mlx5e_ethtool_flow_replace(struct mlx5e_priv *priv,
|
||||
struct ethtool_rx_flow_spec *fs);
|
||||
int mlx5e_ethtool_flow_remove(struct mlx5e_priv *priv,
|
||||
int location);
|
||||
void mlx5e_ethtool_init_steering(struct mlx5e_priv *priv);
|
||||
void mlx5e_ethtool_cleanup_steering(struct mlx5e_priv *priv);
|
||||
int mlx5e_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd);
|
||||
int mlx5e_get_rxnfc(struct net_device *dev,
|
||||
struct ethtool_rxnfc *info, u32 *rule_locs);
|
||||
void mlx5e_set_rx_mode_work(struct work_struct *work);
|
||||
|
||||
int mlx5e_hwstamp_set(struct mlx5e_priv *priv, struct ifreq *ifr);
|
||||
|
|
|
|||
|
|
@ -969,33 +969,6 @@ static int mlx5e_set_rxfh(struct net_device *dev, const u32 *indir,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int mlx5e_get_rxnfc(struct net_device *netdev,
|
||||
struct ethtool_rxnfc *info, u32 *rule_locs)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(netdev);
|
||||
int err = 0;
|
||||
|
||||
switch (info->cmd) {
|
||||
case ETHTOOL_GRXRINGS:
|
||||
info->data = priv->channels.params.num_channels;
|
||||
break;
|
||||
case ETHTOOL_GRXCLSRLCNT:
|
||||
info->rule_cnt = priv->fs.ethtool.tot_num_rules;
|
||||
break;
|
||||
case ETHTOOL_GRXCLSRULE:
|
||||
err = mlx5e_ethtool_get_flow(priv, info, info->fs.location);
|
||||
break;
|
||||
case ETHTOOL_GRXCLSRLALL:
|
||||
err = mlx5e_ethtool_get_all_flows(priv, info, rule_locs);
|
||||
break;
|
||||
default:
|
||||
err = -EOPNOTSUPP;
|
||||
break;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
#define MLX5E_PFC_PREVEN_AUTO_TOUT_MSEC 100
|
||||
#define MLX5E_PFC_PREVEN_TOUT_MAX_MSEC 8000
|
||||
#define MLX5E_PFC_PREVEN_MINOR_PRECENT 85
|
||||
|
|
@ -1606,26 +1579,6 @@ static u32 mlx5e_get_priv_flags(struct net_device *netdev)
|
|||
return priv->channels.params.pflags;
|
||||
}
|
||||
|
||||
static int mlx5e_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd)
|
||||
{
|
||||
int err = 0;
|
||||
struct mlx5e_priv *priv = netdev_priv(dev);
|
||||
|
||||
switch (cmd->cmd) {
|
||||
case ETHTOOL_SRXCLSRLINS:
|
||||
err = mlx5e_ethtool_flow_replace(priv, &cmd->fs);
|
||||
break;
|
||||
case ETHTOOL_SRXCLSRLDEL:
|
||||
err = mlx5e_ethtool_flow_remove(priv, cmd->fs.location);
|
||||
break;
|
||||
default:
|
||||
err = -EOPNOTSUPP;
|
||||
break;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
int mlx5e_ethtool_flash_device(struct mlx5e_priv *priv,
|
||||
struct ethtool_flash *flash)
|
||||
{
|
||||
|
|
@ -1696,5 +1649,4 @@ const struct ethtool_ops mlx5e_ethtool_ops = {
|
|||
.self_test = mlx5e_self_test,
|
||||
.get_msglevel = mlx5e_get_msglevel,
|
||||
.set_msglevel = mlx5e_set_msglevel,
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -675,8 +675,9 @@ static int validate_flow(struct mlx5e_priv *priv,
|
|||
return num_tuples;
|
||||
}
|
||||
|
||||
int mlx5e_ethtool_flow_replace(struct mlx5e_priv *priv,
|
||||
struct ethtool_rx_flow_spec *fs)
|
||||
static int
|
||||
mlx5e_ethtool_flow_replace(struct mlx5e_priv *priv,
|
||||
struct ethtool_rx_flow_spec *fs)
|
||||
{
|
||||
struct mlx5e_ethtool_table *eth_ft;
|
||||
struct mlx5e_ethtool_rule *eth_rule;
|
||||
|
|
@ -723,8 +724,8 @@ int mlx5e_ethtool_flow_replace(struct mlx5e_priv *priv,
|
|||
return err;
|
||||
}
|
||||
|
||||
int mlx5e_ethtool_flow_remove(struct mlx5e_priv *priv,
|
||||
int location)
|
||||
static int
|
||||
mlx5e_ethtool_flow_remove(struct mlx5e_priv *priv, int location)
|
||||
{
|
||||
struct mlx5e_ethtool_rule *eth_rule;
|
||||
int err = 0;
|
||||
|
|
@ -743,8 +744,9 @@ int mlx5e_ethtool_flow_remove(struct mlx5e_priv *priv,
|
|||
return err;
|
||||
}
|
||||
|
||||
int mlx5e_ethtool_get_flow(struct mlx5e_priv *priv, struct ethtool_rxnfc *info,
|
||||
int location)
|
||||
static int
|
||||
mlx5e_ethtool_get_flow(struct mlx5e_priv *priv,
|
||||
struct ethtool_rxnfc *info, int location)
|
||||
{
|
||||
struct mlx5e_ethtool_rule *eth_rule;
|
||||
|
||||
|
|
@ -761,8 +763,9 @@ int mlx5e_ethtool_get_flow(struct mlx5e_priv *priv, struct ethtool_rxnfc *info,
|
|||
return -ENOENT;
|
||||
}
|
||||
|
||||
int mlx5e_ethtool_get_all_flows(struct mlx5e_priv *priv, struct ethtool_rxnfc *info,
|
||||
u32 *rule_locs)
|
||||
static int
|
||||
mlx5e_ethtool_get_all_flows(struct mlx5e_priv *priv,
|
||||
struct ethtool_rxnfc *info, u32 *rule_locs)
|
||||
{
|
||||
int location = 0;
|
||||
int idx = 0;
|
||||
|
|
@ -791,3 +794,51 @@ void mlx5e_ethtool_init_steering(struct mlx5e_priv *priv)
|
|||
{
|
||||
INIT_LIST_HEAD(&priv->fs.ethtool.rules);
|
||||
}
|
||||
|
||||
int mlx5e_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd)
|
||||
{
|
||||
int err = 0;
|
||||
struct mlx5e_priv *priv = netdev_priv(dev);
|
||||
|
||||
switch (cmd->cmd) {
|
||||
case ETHTOOL_SRXCLSRLINS:
|
||||
err = mlx5e_ethtool_flow_replace(priv, &cmd->fs);
|
||||
break;
|
||||
case ETHTOOL_SRXCLSRLDEL:
|
||||
err = mlx5e_ethtool_flow_remove(priv, cmd->fs.location);
|
||||
break;
|
||||
default:
|
||||
err = -EOPNOTSUPP;
|
||||
break;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
int mlx5e_get_rxnfc(struct net_device *dev,
|
||||
struct ethtool_rxnfc *info, u32 *rule_locs)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(dev);
|
||||
int err = 0;
|
||||
|
||||
switch (info->cmd) {
|
||||
case ETHTOOL_GRXRINGS:
|
||||
info->data = priv->channels.params.num_channels;
|
||||
break;
|
||||
case ETHTOOL_GRXCLSRLCNT:
|
||||
info->rule_cnt = priv->fs.ethtool.tot_num_rules;
|
||||
break;
|
||||
case ETHTOOL_GRXCLSRULE:
|
||||
err = mlx5e_ethtool_get_flow(priv, info, info->fs.location);
|
||||
break;
|
||||
case ETHTOOL_GRXCLSRLALL:
|
||||
err = mlx5e_ethtool_get_all_flows(priv, info, rule_locs);
|
||||
break;
|
||||
default:
|
||||
err = -EOPNOTSUPP;
|
||||
break;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user