mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-16 23:45:31 +08:00
net/mlx4_en: Use the new tx_copybreak to set inline threshold
Instead of setting inline threshold using module parameter only on driver load, use set_tunable() to set it dynamically. No need to store the threshold per ring, using instead the netdev global priv->prof->inline_thold Initial value still is set using the module parameter, therefore backward compatability is kept. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Amir Vadai <amirv@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1255a50554
commit
1556b8746e
@ -1267,6 +1267,48 @@ static u32 mlx4_en_get_priv_flags(struct net_device *dev)
|
||||
return priv->pflags;
|
||||
}
|
||||
|
||||
static int mlx4_en_get_tunable(struct net_device *dev,
|
||||
const struct ethtool_tunable *tuna,
|
||||
void *data)
|
||||
{
|
||||
const struct mlx4_en_priv *priv = netdev_priv(dev);
|
||||
int ret = 0;
|
||||
|
||||
switch (tuna->id) {
|
||||
case ETHTOOL_TX_COPYBREAK:
|
||||
*(u32 *)data = priv->prof->inline_thold;
|
||||
break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int mlx4_en_set_tunable(struct net_device *dev,
|
||||
const struct ethtool_tunable *tuna,
|
||||
const void *data)
|
||||
{
|
||||
struct mlx4_en_priv *priv = netdev_priv(dev);
|
||||
int val, ret = 0;
|
||||
|
||||
switch (tuna->id) {
|
||||
case ETHTOOL_TX_COPYBREAK:
|
||||
val = *(u32 *)data;
|
||||
if (val < MIN_PKT_LEN || val > MAX_INLINE)
|
||||
ret = -EINVAL;
|
||||
else
|
||||
priv->prof->inline_thold = val;
|
||||
break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
const struct ethtool_ops mlx4_en_ethtool_ops = {
|
||||
.get_drvinfo = mlx4_en_get_drvinfo,
|
||||
@ -1297,6 +1339,8 @@ const struct ethtool_ops mlx4_en_ethtool_ops = {
|
||||
.get_ts_info = mlx4_en_get_ts_info,
|
||||
.set_priv_flags = mlx4_en_set_priv_flags,
|
||||
.get_priv_flags = mlx4_en_get_priv_flags,
|
||||
.get_tunable = mlx4_en_get_tunable,
|
||||
.set_tunable = mlx4_en_set_tunable,
|
||||
};
|
||||
|
||||
|
||||
|
@ -66,7 +66,6 @@ int mlx4_en_create_tx_ring(struct mlx4_en_priv *priv,
|
||||
ring->size = size;
|
||||
ring->size_mask = size - 1;
|
||||
ring->stride = stride;
|
||||
ring->inline_thold = priv->prof->inline_thold;
|
||||
|
||||
tmp = size * sizeof(struct mlx4_en_tx_info);
|
||||
ring->tx_info = kmalloc_node(tmp, GFP_KERNEL | __GFP_NOWARN, node);
|
||||
|
@ -295,7 +295,6 @@ struct mlx4_en_tx_ring {
|
||||
bool bf_alloced;
|
||||
struct netdev_queue *tx_queue;
|
||||
int hwtstamp_tx_type;
|
||||
int inline_thold;
|
||||
} ____cacheline_aligned_in_smp;
|
||||
|
||||
struct mlx4_en_rx_desc {
|
||||
|
Loading…
Reference in New Issue
Block a user