Commit 82b94f5d authored by David S. Miller's avatar David S. Miller

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: default avatarDavid S. Miller <davem@davemloft.net>
parents 13403d69 269d26f4
...@@ -211,7 +211,7 @@ static void poll_timeout(struct mlx5_cmd_work_ent *ent) ...@@ -211,7 +211,7 @@ static void poll_timeout(struct mlx5_cmd_work_ent *ent)
ent->ret = 0; ent->ret = 0;
return; return;
} }
usleep_range(5000, 10000); cond_resched();
} while (time_before(jiffies, poll_end)); } while (time_before(jiffies, poll_end));
ent->ret = -ETIMEDOUT; ent->ret = -ETIMEDOUT;
......
...@@ -228,7 +228,7 @@ static void mlx5e_update_carrier(struct mlx5e_priv *priv) ...@@ -228,7 +228,7 @@ static void mlx5e_update_carrier(struct mlx5e_priv *priv)
u8 port_state; u8 port_state;
port_state = mlx5_query_vport_state(mdev, port_state = mlx5_query_vport_state(mdev,
MLX5_QUERY_VPORT_STATE_IN_OP_MOD_VNIC_VPORT, MLX5_VPORT_STATE_OP_MOD_VNIC_VPORT,
0); 0);
if (port_state == VPORT_STATE_UP) { 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, ...@@ -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) static int mlx5_vport_link2ifla(u8 esw_link)
{ {
switch (esw_link) { switch (esw_link) {
case MLX5_ESW_VPORT_ADMIN_STATE_DOWN: case MLX5_VPORT_ADMIN_STATE_DOWN:
return IFLA_VF_LINK_STATE_DISABLE; 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_ENABLE;
} }
return IFLA_VF_LINK_STATE_AUTO; return IFLA_VF_LINK_STATE_AUTO;
...@@ -3928,11 +3928,11 @@ static int mlx5_ifla_link2vport(u8 ifla_link) ...@@ -3928,11 +3928,11 @@ static int mlx5_ifla_link2vport(u8 ifla_link)
{ {
switch (ifla_link) { switch (ifla_link) {
case IFLA_VF_LINK_STATE_DISABLE: 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: 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, 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) ...@@ -698,8 +698,8 @@ static int mlx5e_rep_open(struct net_device *dev)
goto unlock; goto unlock;
if (!mlx5_modify_vport_admin_state(priv->mdev, if (!mlx5_modify_vport_admin_state(priv->mdev,
MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT, MLX5_VPORT_STATE_OP_MOD_ESW_VPORT,
rep->vport, MLX5_ESW_VPORT_ADMIN_STATE_UP)) rep->vport, MLX5_VPORT_ADMIN_STATE_UP))
netif_carrier_on(dev); netif_carrier_on(dev);
unlock: unlock:
...@@ -716,8 +716,8 @@ static int mlx5e_rep_close(struct net_device *dev) ...@@ -716,8 +716,8 @@ static int mlx5e_rep_close(struct net_device *dev)
mutex_lock(&priv->state_lock); mutex_lock(&priv->state_lock);
mlx5_modify_vport_admin_state(priv->mdev, mlx5_modify_vport_admin_state(priv->mdev,
MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT, MLX5_VPORT_STATE_OP_MOD_ESW_VPORT,
rep->vport, MLX5_ESW_VPORT_ADMIN_STATE_DOWN); rep->vport, MLX5_VPORT_ADMIN_STATE_DOWN);
ret = mlx5e_close_locked(dev); ret = mlx5e_close_locked(dev);
mutex_unlock(&priv->state_lock); mutex_unlock(&priv->state_lock);
return ret; return ret;
......
...@@ -74,7 +74,7 @@ static int mlx5e_test_link_state(struct mlx5e_priv *priv) ...@@ -74,7 +74,7 @@ static int mlx5e_test_link_state(struct mlx5e_priv *priv)
if (!netif_carrier_ok(priv->netdev)) if (!netif_carrier_ok(priv->netdev))
return 1; 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; return port_state == VPORT_STATE_UP ? 0 : 1;
} }
......
...@@ -246,7 +246,7 @@ esw_fdb_set_vport_promisc_rule(struct mlx5_eswitch *esw, u32 vport) ...@@ -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); 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); int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in);
struct mlx5_flow_table_attr ft_attr = {}; struct mlx5_flow_table_attr ft_attr = {};
...@@ -1469,7 +1469,7 @@ static void esw_apply_vport_conf(struct mlx5_eswitch *esw, ...@@ -1469,7 +1469,7 @@ static void esw_apply_vport_conf(struct mlx5_eswitch *esw,
return; return;
mlx5_modify_vport_admin_state(esw->dev, 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_num,
vport->info.link_state); vport->info.link_state);
mlx5_modify_nic_vport_mac_address(esw->dev, vport_num, vport->info.mac); 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) ...@@ -1582,9 +1582,9 @@ static void esw_disable_vport(struct mlx5_eswitch *esw, int vport_num)
esw_vport_disable_qos(esw, vport_num); esw_vport_disable_qos(esw, vport_num);
if (vport_num && esw->mode == SRIOV_LEGACY) { if (vport_num && esw->mode == SRIOV_LEGACY) {
mlx5_modify_vport_admin_state(esw->dev, 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_num,
MLX5_ESW_VPORT_ADMIN_STATE_DOWN); MLX5_VPORT_ADMIN_STATE_DOWN);
esw_vport_disable_egress_acl(esw, vport); esw_vport_disable_egress_acl(esw, vport);
esw_vport_disable_ingress_acl(esw, vport); esw_vport_disable_ingress_acl(esw, vport);
esw_vport_destroy_drop_counters(vport); esw_vport_destroy_drop_counters(vport);
...@@ -1618,7 +1618,7 @@ int mlx5_eswitch_enable_sriov(struct mlx5_eswitch *esw, int nvfs, int mode) ...@@ -1618,7 +1618,7 @@ int mlx5_eswitch_enable_sriov(struct mlx5_eswitch *esw, int nvfs, int mode)
esw->mode = mode; esw->mode = mode;
if (mode == SRIOV_LEGACY) { if (mode == SRIOV_LEGACY) {
err = esw_create_legacy_fdb_table(esw, nvfs + 1); err = esw_create_legacy_fdb_table(esw);
} else { } else {
mlx5_reload_interface(esw->dev, MLX5_INTERFACE_PROTOCOL_IB); mlx5_reload_interface(esw->dev, MLX5_INTERFACE_PROTOCOL_IB);
...@@ -1736,7 +1736,7 @@ int mlx5_eswitch_init(struct mlx5_core_dev *dev) ...@@ -1736,7 +1736,7 @@ int mlx5_eswitch_init(struct mlx5_core_dev *dev)
struct mlx5_vport *vport = &esw->vports[vport_num]; struct mlx5_vport *vport = &esw->vports[vport_num];
vport->vport = 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; vport->dev = dev;
INIT_WORK(&vport->vport_change_handler, INIT_WORK(&vport->vport_change_handler,
esw_vport_change_handler); esw_vport_change_handler);
...@@ -1860,7 +1860,7 @@ int mlx5_eswitch_set_vport_state(struct mlx5_eswitch *esw, ...@@ -1860,7 +1860,7 @@ int mlx5_eswitch_set_vport_state(struct mlx5_eswitch *esw,
evport = &esw->vports[vport]; evport = &esw->vports[vport];
err = mlx5_modify_vport_admin_state(esw->dev, 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); vport, link_state);
if (err) { if (err) {
mlx5_core_warn(esw->dev, mlx5_core_warn(esw->dev,
......
...@@ -323,7 +323,9 @@ static int mlx5_alloc_irq_vectors(struct mlx5_core_dev *dev) ...@@ -323,7 +323,9 @@ static int mlx5_alloc_irq_vectors(struct mlx5_core_dev *dev)
{ {
struct mlx5_priv *priv = &dev->priv; struct mlx5_priv *priv = &dev->priv;
struct mlx5_eq_table *table = &priv->eq_table; 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 nvec;
int err; int err;
......
...@@ -62,17 +62,6 @@ u8 mlx5_query_vport_state(struct mlx5_core_dev *mdev, u8 opmod, u16 vport) ...@@ -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); 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, int mlx5_modify_vport_admin_state(struct mlx5_core_dev *mdev, u8 opmod,
u16 vport, u8 state) u16 vport, u8 state)
...@@ -90,7 +79,6 @@ int mlx5_modify_vport_admin_state(struct mlx5_core_dev *mdev, u8 opmod, ...@@ -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)); 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, static int mlx5_query_nic_vport_context(struct mlx5_core_dev *mdev, u16 vport,
u32 *out, int outlen) u32 *out, int outlen)
......
...@@ -946,9 +946,9 @@ enum { ...@@ -946,9 +946,9 @@ enum {
}; };
enum { enum {
MLX5_ESW_VPORT_ADMIN_STATE_DOWN = 0x0, MLX5_VPORT_ADMIN_STATE_DOWN = 0x0,
MLX5_ESW_VPORT_ADMIN_STATE_UP = 0x1, MLX5_VPORT_ADMIN_STATE_UP = 0x1,
MLX5_ESW_VPORT_ADMIN_STATE_AUTO = 0x2, MLX5_VPORT_ADMIN_STATE_AUTO = 0x2,
}; };
enum { enum {
......
...@@ -1133,7 +1133,10 @@ struct mlx5_ifc_cmd_hca_cap_bits { ...@@ -1133,7 +1133,10 @@ struct mlx5_ifc_cmd_hca_cap_bits {
u8 general_obj_types[0x40]; 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 reserved_at_480[0x3];
u8 log_max_l2_table[0x5]; u8 log_max_l2_table[0x5];
...@@ -3761,8 +3764,8 @@ struct mlx5_ifc_query_vport_state_out_bits { ...@@ -3761,8 +3764,8 @@ struct mlx5_ifc_query_vport_state_out_bits {
}; };
enum { enum {
MLX5_QUERY_VPORT_STATE_IN_OP_MOD_VNIC_VPORT = 0x0, MLX5_VPORT_STATE_OP_MOD_VNIC_VPORT = 0x0,
MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT = 0x1, MLX5_VPORT_STATE_OP_MOD_ESW_VPORT = 0x1,
}; };
struct mlx5_ifc_query_vport_state_in_bits { struct mlx5_ifc_query_vport_state_in_bits {
......
...@@ -43,8 +43,6 @@ enum { ...@@ -43,8 +43,6 @@ enum {
}; };
u8 mlx5_query_vport_state(struct mlx5_core_dev *mdev, u8 opmod, u16 vport); 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, int mlx5_modify_vport_admin_state(struct mlx5_core_dev *mdev, u8 opmod,
u16 vport, u8 state); u16 vport, u8 state);
int mlx5_query_nic_vport_mac_address(struct mlx5_core_dev *mdev, int mlx5_query_nic_vport_mac_address(struct mlx5_core_dev *mdev,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment