Merge branch 'mlx5-next'
Saeed Mahameed says: ==================== Mellanox, mlx5 next updates 2018-08-09 This series includes mlx5 core driver updates and mostly simple cleanups. From Denis: Use max #EQs reported by firmware to request MSIX vectors. From Eli: Trivial cleanups, unused arguments/functions and reduce command polling interval when command interface is in polling mode. From Eran: Rename vport state enums, to better reflect their actual usage. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
82b94f5d68
@ -211,7 +211,7 @@ static void poll_timeout(struct mlx5_cmd_work_ent *ent)
|
||||
ent->ret = 0;
|
||||
return;
|
||||
}
|
||||
usleep_range(5000, 10000);
|
||||
cond_resched();
|
||||
} while (time_before(jiffies, poll_end));
|
||||
|
||||
ent->ret = -ETIMEDOUT;
|
||||
|
@ -228,7 +228,7 @@ static void mlx5e_update_carrier(struct mlx5e_priv *priv)
|
||||
u8 port_state;
|
||||
|
||||
port_state = mlx5_query_vport_state(mdev,
|
||||
MLX5_QUERY_VPORT_STATE_IN_OP_MOD_VNIC_VPORT,
|
||||
MLX5_VPORT_STATE_OP_MOD_VNIC_VPORT,
|
||||
0);
|
||||
|
||||
if (port_state == VPORT_STATE_UP) {
|
||||
@ -3916,9 +3916,9 @@ static int mlx5e_set_vf_rate(struct net_device *dev, int vf, int min_tx_rate,
|
||||
static int mlx5_vport_link2ifla(u8 esw_link)
|
||||
{
|
||||
switch (esw_link) {
|
||||
case MLX5_ESW_VPORT_ADMIN_STATE_DOWN:
|
||||
case MLX5_VPORT_ADMIN_STATE_DOWN:
|
||||
return IFLA_VF_LINK_STATE_DISABLE;
|
||||
case MLX5_ESW_VPORT_ADMIN_STATE_UP:
|
||||
case MLX5_VPORT_ADMIN_STATE_UP:
|
||||
return IFLA_VF_LINK_STATE_ENABLE;
|
||||
}
|
||||
return IFLA_VF_LINK_STATE_AUTO;
|
||||
@ -3928,11 +3928,11 @@ static int mlx5_ifla_link2vport(u8 ifla_link)
|
||||
{
|
||||
switch (ifla_link) {
|
||||
case IFLA_VF_LINK_STATE_DISABLE:
|
||||
return MLX5_ESW_VPORT_ADMIN_STATE_DOWN;
|
||||
return MLX5_VPORT_ADMIN_STATE_DOWN;
|
||||
case IFLA_VF_LINK_STATE_ENABLE:
|
||||
return MLX5_ESW_VPORT_ADMIN_STATE_UP;
|
||||
return MLX5_VPORT_ADMIN_STATE_UP;
|
||||
}
|
||||
return MLX5_ESW_VPORT_ADMIN_STATE_AUTO;
|
||||
return MLX5_VPORT_ADMIN_STATE_AUTO;
|
||||
}
|
||||
|
||||
static int mlx5e_set_vf_link_state(struct net_device *dev, int vf,
|
||||
|
@ -698,8 +698,8 @@ static int mlx5e_rep_open(struct net_device *dev)
|
||||
goto unlock;
|
||||
|
||||
if (!mlx5_modify_vport_admin_state(priv->mdev,
|
||||
MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT,
|
||||
rep->vport, MLX5_ESW_VPORT_ADMIN_STATE_UP))
|
||||
MLX5_VPORT_STATE_OP_MOD_ESW_VPORT,
|
||||
rep->vport, MLX5_VPORT_ADMIN_STATE_UP))
|
||||
netif_carrier_on(dev);
|
||||
|
||||
unlock:
|
||||
@ -716,8 +716,8 @@ static int mlx5e_rep_close(struct net_device *dev)
|
||||
|
||||
mutex_lock(&priv->state_lock);
|
||||
mlx5_modify_vport_admin_state(priv->mdev,
|
||||
MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT,
|
||||
rep->vport, MLX5_ESW_VPORT_ADMIN_STATE_DOWN);
|
||||
MLX5_VPORT_STATE_OP_MOD_ESW_VPORT,
|
||||
rep->vport, MLX5_VPORT_ADMIN_STATE_DOWN);
|
||||
ret = mlx5e_close_locked(dev);
|
||||
mutex_unlock(&priv->state_lock);
|
||||
return ret;
|
||||
|
@ -74,7 +74,7 @@ static int mlx5e_test_link_state(struct mlx5e_priv *priv)
|
||||
if (!netif_carrier_ok(priv->netdev))
|
||||
return 1;
|
||||
|
||||
port_state = mlx5_query_vport_state(priv->mdev, MLX5_QUERY_VPORT_STATE_IN_OP_MOD_VNIC_VPORT, 0);
|
||||
port_state = mlx5_query_vport_state(priv->mdev, MLX5_VPORT_STATE_OP_MOD_VNIC_VPORT, 0);
|
||||
return port_state == VPORT_STATE_UP ? 0 : 1;
|
||||
}
|
||||
|
||||
|
@ -246,7 +246,7 @@ esw_fdb_set_vport_promisc_rule(struct mlx5_eswitch *esw, u32 vport)
|
||||
return __esw_fdb_set_vport_rule(esw, vport, true, mac_c, mac_v);
|
||||
}
|
||||
|
||||
static int esw_create_legacy_fdb_table(struct mlx5_eswitch *esw, int nvports)
|
||||
static int esw_create_legacy_fdb_table(struct mlx5_eswitch *esw)
|
||||
{
|
||||
int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);
|
||||
struct mlx5_flow_table_attr ft_attr = {};
|
||||
@ -1469,7 +1469,7 @@ static void esw_apply_vport_conf(struct mlx5_eswitch *esw,
|
||||
return;
|
||||
|
||||
mlx5_modify_vport_admin_state(esw->dev,
|
||||
MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT,
|
||||
MLX5_VPORT_STATE_OP_MOD_ESW_VPORT,
|
||||
vport_num,
|
||||
vport->info.link_state);
|
||||
mlx5_modify_nic_vport_mac_address(esw->dev, vport_num, vport->info.mac);
|
||||
@ -1582,9 +1582,9 @@ static void esw_disable_vport(struct mlx5_eswitch *esw, int vport_num)
|
||||
esw_vport_disable_qos(esw, vport_num);
|
||||
if (vport_num && esw->mode == SRIOV_LEGACY) {
|
||||
mlx5_modify_vport_admin_state(esw->dev,
|
||||
MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT,
|
||||
MLX5_VPORT_STATE_OP_MOD_ESW_VPORT,
|
||||
vport_num,
|
||||
MLX5_ESW_VPORT_ADMIN_STATE_DOWN);
|
||||
MLX5_VPORT_ADMIN_STATE_DOWN);
|
||||
esw_vport_disable_egress_acl(esw, vport);
|
||||
esw_vport_disable_ingress_acl(esw, vport);
|
||||
esw_vport_destroy_drop_counters(vport);
|
||||
@ -1618,7 +1618,7 @@ int mlx5_eswitch_enable_sriov(struct mlx5_eswitch *esw, int nvfs, int mode)
|
||||
esw->mode = mode;
|
||||
|
||||
if (mode == SRIOV_LEGACY) {
|
||||
err = esw_create_legacy_fdb_table(esw, nvfs + 1);
|
||||
err = esw_create_legacy_fdb_table(esw);
|
||||
} else {
|
||||
mlx5_reload_interface(esw->dev, MLX5_INTERFACE_PROTOCOL_IB);
|
||||
|
||||
@ -1736,7 +1736,7 @@ int mlx5_eswitch_init(struct mlx5_core_dev *dev)
|
||||
struct mlx5_vport *vport = &esw->vports[vport_num];
|
||||
|
||||
vport->vport = vport_num;
|
||||
vport->info.link_state = MLX5_ESW_VPORT_ADMIN_STATE_AUTO;
|
||||
vport->info.link_state = MLX5_VPORT_ADMIN_STATE_AUTO;
|
||||
vport->dev = dev;
|
||||
INIT_WORK(&vport->vport_change_handler,
|
||||
esw_vport_change_handler);
|
||||
@ -1860,7 +1860,7 @@ int mlx5_eswitch_set_vport_state(struct mlx5_eswitch *esw,
|
||||
evport = &esw->vports[vport];
|
||||
|
||||
err = mlx5_modify_vport_admin_state(esw->dev,
|
||||
MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT,
|
||||
MLX5_VPORT_STATE_OP_MOD_ESW_VPORT,
|
||||
vport, link_state);
|
||||
if (err) {
|
||||
mlx5_core_warn(esw->dev,
|
||||
|
@ -323,7 +323,9 @@ static int mlx5_alloc_irq_vectors(struct mlx5_core_dev *dev)
|
||||
{
|
||||
struct mlx5_priv *priv = &dev->priv;
|
||||
struct mlx5_eq_table *table = &priv->eq_table;
|
||||
int num_eqs = 1 << MLX5_CAP_GEN(dev, log_max_eq);
|
||||
int num_eqs = MLX5_CAP_GEN(dev, max_num_eqs) ?
|
||||
MLX5_CAP_GEN(dev, max_num_eqs) :
|
||||
1 << MLX5_CAP_GEN(dev, log_max_eq);
|
||||
int nvec;
|
||||
int err;
|
||||
|
||||
|
@ -62,17 +62,6 @@ u8 mlx5_query_vport_state(struct mlx5_core_dev *mdev, u8 opmod, u16 vport)
|
||||
|
||||
return MLX5_GET(query_vport_state_out, out, state);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mlx5_query_vport_state);
|
||||
|
||||
u8 mlx5_query_vport_admin_state(struct mlx5_core_dev *mdev, u8 opmod, u16 vport)
|
||||
{
|
||||
u32 out[MLX5_ST_SZ_DW(query_vport_state_out)] = {0};
|
||||
|
||||
_mlx5_query_vport_state(mdev, opmod, vport, out, sizeof(out));
|
||||
|
||||
return MLX5_GET(query_vport_state_out, out, admin_state);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mlx5_query_vport_admin_state);
|
||||
|
||||
int mlx5_modify_vport_admin_state(struct mlx5_core_dev *mdev, u8 opmod,
|
||||
u16 vport, u8 state)
|
||||
@ -90,7 +79,6 @@ int mlx5_modify_vport_admin_state(struct mlx5_core_dev *mdev, u8 opmod,
|
||||
|
||||
return mlx5_cmd_exec(mdev, in, sizeof(in), out, sizeof(out));
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mlx5_modify_vport_admin_state);
|
||||
|
||||
static int mlx5_query_nic_vport_context(struct mlx5_core_dev *mdev, u16 vport,
|
||||
u32 *out, int outlen)
|
||||
|
@ -946,9 +946,9 @@ enum {
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX5_ESW_VPORT_ADMIN_STATE_DOWN = 0x0,
|
||||
MLX5_ESW_VPORT_ADMIN_STATE_UP = 0x1,
|
||||
MLX5_ESW_VPORT_ADMIN_STATE_AUTO = 0x2,
|
||||
MLX5_VPORT_ADMIN_STATE_DOWN = 0x0,
|
||||
MLX5_VPORT_ADMIN_STATE_UP = 0x1,
|
||||
MLX5_VPORT_ADMIN_STATE_AUTO = 0x2,
|
||||
};
|
||||
|
||||
enum {
|
||||
|
@ -1133,7 +1133,10 @@ struct mlx5_ifc_cmd_hca_cap_bits {
|
||||
|
||||
u8 general_obj_types[0x40];
|
||||
|
||||
u8 reserved_at_440[0x40];
|
||||
u8 reserved_at_440[0x20];
|
||||
|
||||
u8 reserved_at_460[0x10];
|
||||
u8 max_num_eqs[0x10];
|
||||
|
||||
u8 reserved_at_480[0x3];
|
||||
u8 log_max_l2_table[0x5];
|
||||
@ -3761,8 +3764,8 @@ struct mlx5_ifc_query_vport_state_out_bits {
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX5_QUERY_VPORT_STATE_IN_OP_MOD_VNIC_VPORT = 0x0,
|
||||
MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT = 0x1,
|
||||
MLX5_VPORT_STATE_OP_MOD_VNIC_VPORT = 0x0,
|
||||
MLX5_VPORT_STATE_OP_MOD_ESW_VPORT = 0x1,
|
||||
};
|
||||
|
||||
struct mlx5_ifc_query_vport_state_in_bits {
|
||||
|
@ -43,8 +43,6 @@ enum {
|
||||
};
|
||||
|
||||
u8 mlx5_query_vport_state(struct mlx5_core_dev *mdev, u8 opmod, u16 vport);
|
||||
u8 mlx5_query_vport_admin_state(struct mlx5_core_dev *mdev, u8 opmod,
|
||||
u16 vport);
|
||||
int mlx5_modify_vport_admin_state(struct mlx5_core_dev *mdev, u8 opmod,
|
||||
u16 vport, u8 state);
|
||||
int mlx5_query_nic_vport_mac_address(struct mlx5_core_dev *mdev,
|
||||
|
Loading…
x
Reference in New Issue
Block a user