* [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10
@ 2021-03-11 7:09 Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 1/9] net/mlx5: Cleanup prototype warning Saeed Mahameed
` (9 more replies)
0 siblings, 10 replies; 14+ messages in thread
From: Saeed Mahameed @ 2021-03-11 7:09 UTC (permalink / raw)
To: Saeed Mahameed, Leon Romanovsky, netdev, linux-rdma
From: Saeed Mahameed <saeedm@nvidia.com>
This series is targeting mlx5-next shared tree for mlx5
netdev and rdma shared updates.
From Mark, E-Switch cleanups and refactoring, and the addition
of single FDB mode needed HW bits.
From Mikhael, Remove unused struct field
From Saeed, Cleanup W=1 prototype warning
From Zheng, Esw related cleanup
From Tariq, User order-0 page allocation for EQs
In case of no objections, this series will be applied to mlx5-next first
and then sent in one pull request to both netdev and rdma next trees.
Thanks,
Saeed
Mark Bloch (5):
net/mlx5: E-Switch, Add match on vhca id to default send rules
net/mlx5: E-Switch, Add eswitch pointer to each representor
RDMA/mlx5: Use represntor E-Switch when getting netdev and metadata
net/mlx5: E-Switch, Refactor send to vport to be more generic
net/mlx5: Add IFC bits needed for single FDB mode
Mikhael Goikhman (1):
net/mlx5: Remove unused mlx5_core_health member recover_work
Saeed Mahameed (1):
net/mlx5: Cleanup prototype warning
Tariq Toukan (1):
net/mlx5: Use order-0 allocations for EQs
Zheng Yongjun (1):
net/mlx5: simplify the return expression of mlx5_esw_offloads_pair()
drivers/infiniband/hw/mlx5/fs.c | 2 +-
drivers/infiniband/hw/mlx5/ib_rep.c | 5 ++-
drivers/infiniband/hw/mlx5/main.c | 3 +-
.../ethernet/mellanox/mlx5/core/en/health.c | 2 +-
.../net/ethernet/mellanox/mlx5/core/en_rep.c | 3 +-
drivers/net/ethernet/mellanox/mlx5/core/eq.c | 27 +++++++++------
.../mellanox/mlx5/core/eswitch_offloads.c | 34 +++++++++++++------
.../net/ethernet/mellanox/mlx5/core/lag_mp.c | 2 +-
.../net/ethernet/mellanox/mlx5/core/lib/eq.h | 15 +++++---
drivers/net/ethernet/mellanox/mlx5/core/wq.c | 5 ---
include/linux/mlx5/driver.h | 6 +++-
include/linux/mlx5/eswitch.h | 5 +--
include/linux/mlx5/mlx5_ifc.h | 21 ++++++++----
13 files changed, 79 insertions(+), 51 deletions(-)
--
2.29.2
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH mlx5-next 1/9] net/mlx5: Cleanup prototype warning
2021-03-11 7:09 [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10 Saeed Mahameed
@ 2021-03-11 7:09 ` Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 2/9] net/mlx5: simplify the return expression of mlx5_esw_offloads_pair() Saeed Mahameed
` (8 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2021-03-11 7:09 UTC (permalink / raw)
To: Saeed Mahameed, Leon Romanovsky, netdev, linux-rdma
From: Saeed Mahameed <saeedm@nvidia.com>
Cleanup W=1 warning:
drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c:49:
warning: expecting prototype for Set lag port affinity().
Prototype was for mlx5_lag_set_port_affinity() instead
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
---
drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c b/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c
index 88e58ac902de..2c41a6920264 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c
@@ -35,7 +35,7 @@ bool mlx5_lag_is_multipath(struct mlx5_core_dev *dev)
}
/**
- * Set lag port affinity
+ * mlx5_lag_set_port_affinity
*
* @ldev: lag device
* @port:
--
2.29.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH mlx5-next 2/9] net/mlx5: simplify the return expression of mlx5_esw_offloads_pair()
2021-03-11 7:09 [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10 Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 1/9] net/mlx5: Cleanup prototype warning Saeed Mahameed
@ 2021-03-11 7:09 ` Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 3/9] net/mlx5: Remove unused mlx5_core_health member recover_work Saeed Mahameed
` (7 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2021-03-11 7:09 UTC (permalink / raw)
To: Saeed Mahameed, Leon Romanovsky, netdev, linux-rdma; +Cc: Zheng Yongjun
From: Zheng Yongjun <zhengyongjun3@huawei.com>
Simplify the return expression.
Signed-off-by: Zheng Yongjun <zhengyongjun3@huawei.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
---
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
index 94cb0217b4f3..107b1f208b72 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
@@ -2288,13 +2288,8 @@ void esw_offloads_unload_rep(struct mlx5_eswitch *esw, u16 vport_num)
static int mlx5_esw_offloads_pair(struct mlx5_eswitch *esw,
struct mlx5_eswitch *peer_esw)
{
- int err;
- err = esw_add_fdb_peer_miss_rules(esw, peer_esw->dev);
- if (err)
- return err;
-
- return 0;
+ return esw_add_fdb_peer_miss_rules(esw, peer_esw->dev);
}
static void mlx5_esw_offloads_unpair(struct mlx5_eswitch *esw)
--
2.29.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH mlx5-next 3/9] net/mlx5: Remove unused mlx5_core_health member recover_work
2021-03-11 7:09 [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10 Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 1/9] net/mlx5: Cleanup prototype warning Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 2/9] net/mlx5: simplify the return expression of mlx5_esw_offloads_pair() Saeed Mahameed
@ 2021-03-11 7:09 ` Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 4/9] net/mlx5: E-Switch, Add match on vhca id to default send rules Saeed Mahameed
` (6 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2021-03-11 7:09 UTC (permalink / raw)
To: Saeed Mahameed, Leon Romanovsky, netdev, linux-rdma
Cc: Mikhael Goikhman, Tariq Toukan
From: Mikhael Goikhman <migo@nvidia.com>
The code related to health->recover_work was removed in
commit 63cbc552eebf ("net/mlx5: Handle SW reset of FW in error flow")
Fix struct mlx5_core_health accordingly.
Signed-off-by: Mikhael Goikhman <migo@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
---
include/linux/mlx5/driver.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h
index 53b89631a1d9..8fe51b4a781e 100644
--- a/include/linux/mlx5/driver.h
+++ b/include/linux/mlx5/driver.h
@@ -438,7 +438,6 @@ struct mlx5_core_health {
unsigned long flags;
struct work_struct fatal_report_work;
struct work_struct report_work;
- struct delayed_work recover_work;
struct devlink_health_reporter *fw_reporter;
struct devlink_health_reporter *fw_fatal_reporter;
};
--
2.29.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH mlx5-next 4/9] net/mlx5: E-Switch, Add match on vhca id to default send rules
2021-03-11 7:09 [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10 Saeed Mahameed
` (2 preceding siblings ...)
2021-03-11 7:09 ` [PATCH mlx5-next 3/9] net/mlx5: Remove unused mlx5_core_health member recover_work Saeed Mahameed
@ 2021-03-11 7:09 ` Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 5/9] net/mlx5: E-Switch, Add eswitch pointer to each representor Saeed Mahameed
` (5 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2021-03-11 7:09 UTC (permalink / raw)
To: Saeed Mahameed, Leon Romanovsky, netdev, linux-rdma; +Cc: Mark Bloch
From: Mark Bloch <mbloch@nvidia.com>
Match on the vhca id of the E-Switch owner when creating the send-to-vport
representor rules.
Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
---
.../ethernet/mellanox/mlx5/core/eswitch_offloads.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
index 107b1f208b72..fd5f8b830584 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
@@ -1055,10 +1055,16 @@ mlx5_eswitch_add_send_to_vport_rule(struct mlx5_eswitch *esw, u16 vport,
MLX5_SET(fte_match_set_misc, misc, source_sqn, sqn);
/* source vport is the esw manager */
MLX5_SET(fte_match_set_misc, misc, source_port, esw->manager_vport);
+ if (MLX5_CAP_ESW(esw->dev, merged_eswitch))
+ MLX5_SET(fte_match_set_misc, misc, source_eswitch_owner_vhca_id,
+ MLX5_CAP_GEN(esw->dev, vhca_id));
misc = MLX5_ADDR_OF(fte_match_param, spec->match_criteria, misc_parameters);
MLX5_SET_TO_ONES(fte_match_set_misc, misc, source_sqn);
MLX5_SET_TO_ONES(fte_match_set_misc, misc, source_port);
+ if (MLX5_CAP_ESW(esw->dev, merged_eswitch))
+ MLX5_SET_TO_ONES(fte_match_set_misc, misc,
+ source_eswitch_owner_vhca_id);
spec->match_criteria_enable = MLX5_MATCH_MISC_PARAMETERS;
dest.type = MLX5_FLOW_DESTINATION_TYPE_VPORT;
@@ -1702,6 +1708,12 @@ static int esw_create_offloads_fdb_tables(struct mlx5_eswitch *esw)
MLX5_SET_TO_ONES(fte_match_param, match_criteria, misc_parameters.source_sqn);
MLX5_SET_TO_ONES(fte_match_param, match_criteria, misc_parameters.source_port);
+ if (MLX5_CAP_ESW(esw->dev, merged_eswitch)) {
+ MLX5_SET_TO_ONES(fte_match_param, match_criteria,
+ misc_parameters.source_eswitch_owner_vhca_id);
+ MLX5_SET(create_flow_group_in, flow_group_in,
+ source_eswitch_owner_vhca_id_valid, 1);
+ }
ix = esw->total_vports * MAX_SQ_NVPORTS + MAX_PF_SQ;
MLX5_SET(create_flow_group_in, flow_group_in, start_flow_index, 0);
--
2.29.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH mlx5-next 5/9] net/mlx5: E-Switch, Add eswitch pointer to each representor
2021-03-11 7:09 [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10 Saeed Mahameed
` (3 preceding siblings ...)
2021-03-11 7:09 ` [PATCH mlx5-next 4/9] net/mlx5: E-Switch, Add match on vhca id to default send rules Saeed Mahameed
@ 2021-03-11 7:09 ` Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 6/9] RDMA/mlx5: Use represntor E-Switch when getting netdev and metadata Saeed Mahameed
` (4 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2021-03-11 7:09 UTC (permalink / raw)
To: Saeed Mahameed, Leon Romanovsky, netdev, linux-rdma; +Cc: Mark Bloch
From: Mark Bloch <mbloch@nvidia.com>
Store the managing E-Switch of each representor. This will be used
when a representor is created on eswitch manager 0 but the vport
belongs to eswitch manager 1.
Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
---
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c | 1 +
include/linux/mlx5/eswitch.h | 1 +
2 files changed, 2 insertions(+)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
index fd5f8b830584..f6c0e7e05ad5 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
@@ -3153,6 +3153,7 @@ void mlx5_eswitch_register_vport_reps(struct mlx5_eswitch *esw,
esw->offloads.rep_ops[rep_type] = ops;
mlx5_esw_for_all_reps(esw, i, rep) {
if (likely(mlx5_eswitch_vport_has_rep(esw, i))) {
+ rep->esw = esw;
rep_data = &rep->rep_data[rep_type];
atomic_set(&rep_data->state, REP_REGISTERED);
}
diff --git a/include/linux/mlx5/eswitch.h b/include/linux/mlx5/eswitch.h
index 994c2c8cb4fd..72d480df2a03 100644
--- a/include/linux/mlx5/eswitch.h
+++ b/include/linux/mlx5/eswitch.h
@@ -48,6 +48,7 @@ struct mlx5_eswitch_rep {
/* Only IB rep is using vport_index */
u16 vport_index;
u32 vlan_refcount;
+ struct mlx5_eswitch *esw;
};
void mlx5_eswitch_register_vport_reps(struct mlx5_eswitch *esw,
--
2.29.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH mlx5-next 6/9] RDMA/mlx5: Use represntor E-Switch when getting netdev and metadata
2021-03-11 7:09 [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10 Saeed Mahameed
` (4 preceding siblings ...)
2021-03-11 7:09 ` [PATCH mlx5-next 5/9] net/mlx5: E-Switch, Add eswitch pointer to each representor Saeed Mahameed
@ 2021-03-11 7:09 ` Saeed Mahameed
2021-03-11 17:33 ` Jason Gunthorpe
2021-03-11 7:09 ` [PATCH mlx5-next 7/9] net/mlx5: E-Switch, Refactor send to vport to be more generic Saeed Mahameed
` (3 subsequent siblings)
9 siblings, 1 reply; 14+ messages in thread
From: Saeed Mahameed @ 2021-03-11 7:09 UTC (permalink / raw)
To: Saeed Mahameed, Leon Romanovsky, netdev, linux-rdma; +Cc: Mark Bloch
From: Mark Bloch <mbloch@nvidia.com>
Now that a pointer to the managing E-Switch is stored in the representor
use it.
Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
---
drivers/infiniband/hw/mlx5/fs.c | 2 +-
drivers/infiniband/hw/mlx5/ib_rep.c | 2 +-
drivers/infiniband/hw/mlx5/main.c | 3 +--
3 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/infiniband/hw/mlx5/fs.c b/drivers/infiniband/hw/mlx5/fs.c
index 25da0b05b4e2..01370d9a871a 100644
--- a/drivers/infiniband/hw/mlx5/fs.c
+++ b/drivers/infiniband/hw/mlx5/fs.c
@@ -879,7 +879,7 @@ static void mlx5_ib_set_rule_source_port(struct mlx5_ib_dev *dev,
misc_parameters_2);
MLX5_SET(fte_match_set_misc2, misc, metadata_reg_c_0,
- mlx5_eswitch_get_vport_metadata_for_match(esw,
+ mlx5_eswitch_get_vport_metadata_for_match(rep->esw,
rep->vport));
misc = MLX5_ADDR_OF(fte_match_param, spec->match_criteria,
misc_parameters_2);
diff --git a/drivers/infiniband/hw/mlx5/ib_rep.c b/drivers/infiniband/hw/mlx5/ib_rep.c
index 9164cc069ad4..4eae7131b0ce 100644
--- a/drivers/infiniband/hw/mlx5/ib_rep.c
+++ b/drivers/infiniband/hw/mlx5/ib_rep.c
@@ -20,7 +20,7 @@ mlx5_ib_set_vport_rep(struct mlx5_core_dev *dev, struct mlx5_eswitch_rep *rep)
rep->rep_data[REP_IB].priv = ibdev;
write_lock(&ibdev->port[vport_index].roce.netdev_lock);
ibdev->port[vport_index].roce.netdev =
- mlx5_ib_get_rep_netdev(dev->priv.eswitch, rep->vport);
+ mlx5_ib_get_rep_netdev(rep->esw, rep->vport);
write_unlock(&ibdev->port[vport_index].roce.netdev_lock);
return 0;
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
index 0d69a697d75f..7a7f6ccd02a5 100644
--- a/drivers/infiniband/hw/mlx5/main.c
+++ b/drivers/infiniband/hw/mlx5/main.c
@@ -126,7 +126,6 @@ static struct mlx5_roce *mlx5_get_rep_roce(struct mlx5_ib_dev *dev,
struct net_device *ndev,
u8 *port_num)
{
- struct mlx5_eswitch *esw = dev->mdev->priv.eswitch;
struct net_device *rep_ndev;
struct mlx5_ib_port *port;
int i;
@@ -137,7 +136,7 @@ static struct mlx5_roce *mlx5_get_rep_roce(struct mlx5_ib_dev *dev,
continue;
read_lock(&port->roce.netdev_lock);
- rep_ndev = mlx5_ib_get_rep_netdev(esw,
+ rep_ndev = mlx5_ib_get_rep_netdev(port->rep->esw,
port->rep->vport);
if (rep_ndev == ndev) {
read_unlock(&port->roce.netdev_lock);
--
2.29.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH mlx5-next 7/9] net/mlx5: E-Switch, Refactor send to vport to be more generic
2021-03-11 7:09 [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10 Saeed Mahameed
` (5 preceding siblings ...)
2021-03-11 7:09 ` [PATCH mlx5-next 6/9] RDMA/mlx5: Use represntor E-Switch when getting netdev and metadata Saeed Mahameed
@ 2021-03-11 7:09 ` Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 8/9] net/mlx5: Add IFC bits needed for single FDB mode Saeed Mahameed
` (2 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2021-03-11 7:09 UTC (permalink / raw)
To: Saeed Mahameed, Leon Romanovsky, netdev, linux-rdma; +Cc: Mark Bloch
From: Mark Bloch <mbloch@nvidia.com>
Now that each representor stores a pointer to the managing E-Switch
use that information when creating the send-to-vport rules.
Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
---
drivers/infiniband/hw/mlx5/ib_rep.c | 3 +--
.../net/ethernet/mellanox/mlx5/core/en_rep.c | 3 +--
.../mellanox/mlx5/core/eswitch_offloads.c | 20 +++++++++++--------
include/linux/mlx5/eswitch.h | 4 ++--
4 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/drivers/infiniband/hw/mlx5/ib_rep.c b/drivers/infiniband/hw/mlx5/ib_rep.c
index 4eae7131b0ce..db5de720bb12 100644
--- a/drivers/infiniband/hw/mlx5/ib_rep.c
+++ b/drivers/infiniband/hw/mlx5/ib_rep.c
@@ -123,8 +123,7 @@ struct mlx5_flow_handle *create_flow_rule_vport_sq(struct mlx5_ib_dev *dev,
rep = dev->port[port - 1].rep;
- return mlx5_eswitch_add_send_to_vport_rule(esw, rep->vport,
- sq->base.mqp.qpn);
+ return mlx5_eswitch_add_send_to_vport_rule(esw, rep, sq->base.mqp.qpn);
}
static int mlx5r_rep_probe(struct auxiliary_device *adev,
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
index a132fff7a980..3d6c2bce67d2 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
@@ -411,8 +411,7 @@ static int mlx5e_sqs2vport_start(struct mlx5_eswitch *esw,
}
/* Add re-inject rule to the PF/representor sqs */
- flow_rule = mlx5_eswitch_add_send_to_vport_rule(esw,
- rep->vport,
+ flow_rule = mlx5_eswitch_add_send_to_vport_rule(esw, rep,
sqns_array[i]);
if (IS_ERR(flow_rule)) {
err = PTR_ERR(flow_rule);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
index f6c0e7e05ad5..6090b2609089 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
@@ -1036,7 +1036,8 @@ int mlx5_eswitch_del_vlan_action(struct mlx5_eswitch *esw,
}
struct mlx5_flow_handle *
-mlx5_eswitch_add_send_to_vport_rule(struct mlx5_eswitch *esw, u16 vport,
+mlx5_eswitch_add_send_to_vport_rule(struct mlx5_eswitch *on_esw,
+ struct mlx5_eswitch_rep *rep,
u32 sqn)
{
struct mlx5_flow_act flow_act = {0};
@@ -1054,27 +1055,30 @@ mlx5_eswitch_add_send_to_vport_rule(struct mlx5_eswitch *esw, u16 vport,
misc = MLX5_ADDR_OF(fte_match_param, spec->match_value, misc_parameters);
MLX5_SET(fte_match_set_misc, misc, source_sqn, sqn);
/* source vport is the esw manager */
- MLX5_SET(fte_match_set_misc, misc, source_port, esw->manager_vport);
- if (MLX5_CAP_ESW(esw->dev, merged_eswitch))
+ MLX5_SET(fte_match_set_misc, misc, source_port, rep->esw->manager_vport);
+ if (MLX5_CAP_ESW(on_esw->dev, merged_eswitch))
MLX5_SET(fte_match_set_misc, misc, source_eswitch_owner_vhca_id,
- MLX5_CAP_GEN(esw->dev, vhca_id));
+ MLX5_CAP_GEN(rep->esw->dev, vhca_id));
misc = MLX5_ADDR_OF(fte_match_param, spec->match_criteria, misc_parameters);
MLX5_SET_TO_ONES(fte_match_set_misc, misc, source_sqn);
MLX5_SET_TO_ONES(fte_match_set_misc, misc, source_port);
- if (MLX5_CAP_ESW(esw->dev, merged_eswitch))
+ if (MLX5_CAP_ESW(on_esw->dev, merged_eswitch))
MLX5_SET_TO_ONES(fte_match_set_misc, misc,
source_eswitch_owner_vhca_id);
spec->match_criteria_enable = MLX5_MATCH_MISC_PARAMETERS;
dest.type = MLX5_FLOW_DESTINATION_TYPE_VPORT;
- dest.vport.num = vport;
+ dest.vport.num = rep->vport;
+ dest.vport.vhca_id = MLX5_CAP_GEN(rep->esw->dev, vhca_id);
+ dest.vport.flags |= MLX5_FLOW_DEST_VPORT_VHCA_ID;
flow_act.action = MLX5_FLOW_CONTEXT_ACTION_FWD_DEST;
- flow_rule = mlx5_add_flow_rules(esw->fdb_table.offloads.slow_fdb,
+ flow_rule = mlx5_add_flow_rules(on_esw->fdb_table.offloads.slow_fdb,
spec, &flow_act, &dest, 1);
if (IS_ERR(flow_rule))
- esw_warn(esw->dev, "FDB: Failed to add send to vport rule err %ld\n", PTR_ERR(flow_rule));
+ esw_warn(on_esw->dev, "FDB: Failed to add send to vport rule err %ld\n",
+ PTR_ERR(flow_rule));
out:
kvfree(spec);
return flow_rule;
diff --git a/include/linux/mlx5/eswitch.h b/include/linux/mlx5/eswitch.h
index 72d480df2a03..2ec0527991c8 100644
--- a/include/linux/mlx5/eswitch.h
+++ b/include/linux/mlx5/eswitch.h
@@ -62,8 +62,8 @@ struct mlx5_eswitch_rep *mlx5_eswitch_vport_rep(struct mlx5_eswitch *esw,
u16 vport_num);
void *mlx5_eswitch_uplink_get_proto_dev(struct mlx5_eswitch *esw, u8 rep_type);
struct mlx5_flow_handle *
-mlx5_eswitch_add_send_to_vport_rule(struct mlx5_eswitch *esw,
- u16 vport_num, u32 sqn);
+mlx5_eswitch_add_send_to_vport_rule(struct mlx5_eswitch *on_esw,
+ struct mlx5_eswitch_rep *rep, u32 sqn);
u16 mlx5_eswitch_get_total_vports(const struct mlx5_core_dev *dev);
--
2.29.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH mlx5-next 8/9] net/mlx5: Add IFC bits needed for single FDB mode
2021-03-11 7:09 [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10 Saeed Mahameed
` (6 preceding siblings ...)
2021-03-11 7:09 ` [PATCH mlx5-next 7/9] net/mlx5: E-Switch, Refactor send to vport to be more generic Saeed Mahameed
@ 2021-03-11 7:09 ` Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 9/9] net/mlx5: Use order-0 allocations for EQs Saeed Mahameed
2021-03-12 21:10 ` [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10 Saeed Mahameed
9 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2021-03-11 7:09 UTC (permalink / raw)
To: Saeed Mahameed, Leon Romanovsky, netdev, linux-rdma; +Cc: Mark Bloch
From: Mark Bloch <mbloch@nvidia.com>
Currently we operate in a mode where each eswitch manager has a separate
FDB. In order to combine these multiple FDBs we expose new caps to allow
this:
- Set root flow table which isn't native.
- Set FDB a different selection mode when in LAG mode.
Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
---
include/linux/mlx5/mlx5_ifc.h | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h
index df5d91c8b2d4..3ee7a86f39e4 100644
--- a/include/linux/mlx5/mlx5_ifc.h
+++ b/include/linux/mlx5/mlx5_ifc.h
@@ -806,9 +806,11 @@ struct mlx5_ifc_e_switch_cap_bits {
u8 vport_svlan_insert[0x1];
u8 vport_cvlan_insert_if_not_exist[0x1];
u8 vport_cvlan_insert_overwrite[0x1];
- u8 reserved_at_5[0x3];
+ u8 reserved_at_5[0x2];
+ u8 esw_shared_ingress_acl[0x1];
u8 esw_uplink_ingress_acl[0x1];
- u8 reserved_at_9[0x10];
+ u8 root_ft_on_other_esw[0x1];
+ u8 reserved_at_a[0xf];
u8 esw_functions_changed[0x1];
u8 reserved_at_1a[0x1];
u8 ecpf_vport_exists[0x1];
@@ -1502,7 +1504,8 @@ struct mlx5_ifc_cmd_hca_cap_bits {
u8 reserved_at_270[0x6];
u8 lag_dct[0x2];
u8 lag_tx_port_affinity[0x1];
- u8 reserved_at_279[0x2];
+ u8 lag_native_fdb_selection[0x1];
+ u8 reserved_at_27a[0x1];
u8 lag_master[0x1];
u8 num_lag_ports[0x4];
@@ -10036,14 +10039,19 @@ struct mlx5_ifc_set_flow_table_root_in_bits {
u8 reserved_at_60[0x20];
u8 table_type[0x8];
- u8 reserved_at_88[0x18];
+ u8 reserved_at_88[0x7];
+ u8 table_of_other_vport[0x1];
+ u8 table_vport_number[0x10];
u8 reserved_at_a0[0x8];
u8 table_id[0x18];
u8 reserved_at_c0[0x8];
u8 underlay_qpn[0x18];
- u8 reserved_at_e0[0x120];
+ u8 table_eswitch_owner_vhca_id_valid[0x1];
+ u8 reserved_at_e1[0xf];
+ u8 table_eswitch_owner_vhca_id[0x10];
+ u8 reserved_at_100[0x100];
};
enum {
@@ -10273,7 +10281,8 @@ struct mlx5_ifc_dcbx_param_bits {
};
struct mlx5_ifc_lagc_bits {
- u8 reserved_at_0[0x1d];
+ u8 fdb_selection_mode[0x1];
+ u8 reserved_at_1[0x1c];
u8 lag_state[0x3];
u8 reserved_at_20[0x14];
--
2.29.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH mlx5-next 9/9] net/mlx5: Use order-0 allocations for EQs
2021-03-11 7:09 [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10 Saeed Mahameed
` (7 preceding siblings ...)
2021-03-11 7:09 ` [PATCH mlx5-next 8/9] net/mlx5: Add IFC bits needed for single FDB mode Saeed Mahameed
@ 2021-03-11 7:09 ` Saeed Mahameed
2021-03-12 21:10 ` [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10 Saeed Mahameed
9 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2021-03-11 7:09 UTC (permalink / raw)
To: Saeed Mahameed, Leon Romanovsky, netdev, linux-rdma
Cc: Tariq Toukan, Shay Drory
From: Tariq Toukan <tariqt@nvidia.com>
Currently we are allocating high-order page for EQs. In case of
fragmented system, VF hot remove/add in VMs for example, there isn't
enough contiguous memory for EQs allocation, which results in crashing
of the VM.
Therefore, use order-0 fragments for the EQ allocations instead.
Performance tests:
ConnectX-5 100Gbps, CPU: Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz
Performance tests show no sensible degradation.
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Shay Drory <shayd@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
---
.../ethernet/mellanox/mlx5/core/en/health.c | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/eq.c | 27 +++++++++++--------
.../net/ethernet/mellanox/mlx5/core/lib/eq.h | 15 +++++++----
drivers/net/ethernet/mellanox/mlx5/core/wq.c | 5 ----
include/linux/mlx5/driver.h | 5 ++++
5 files changed, 32 insertions(+), 22 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/health.c b/drivers/net/ethernet/mellanox/mlx5/core/en/health.c
index 84e501e057b4..6f4e6c34b2a2 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/health.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/health.c
@@ -128,7 +128,7 @@ int mlx5e_health_eq_diag_fmsg(struct mlx5_eq_comp *eq, struct devlink_fmsg *fmsg
if (err)
return err;
- err = devlink_fmsg_u32_pair_put(fmsg, "size", eq->core.nent);
+ err = devlink_fmsg_u32_pair_put(fmsg, "size", eq_get_size(&eq->core));
if (err)
return err;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eq.c b/drivers/net/ethernet/mellanox/mlx5/core/eq.c
index 174dfbc996c6..4e8381030d77 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/eq.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eq.c
@@ -271,7 +271,7 @@ static void init_eq_buf(struct mlx5_eq *eq)
struct mlx5_eqe *eqe;
int i;
- for (i = 0; i < eq->nent; i++) {
+ for (i = 0; i < eq_get_size(eq); i++) {
eqe = get_eqe(eq, i);
eqe->owner = MLX5_EQE_OWNER_INIT_VAL;
}
@@ -281,8 +281,10 @@ static int
create_map_eq(struct mlx5_core_dev *dev, struct mlx5_eq *eq,
struct mlx5_eq_param *param)
{
+ u8 log_eq_size = order_base_2(param->nent + MLX5_NUM_SPARE_EQE);
struct mlx5_cq_table *cq_table = &eq->cq_table;
u32 out[MLX5_ST_SZ_DW(create_eq_out)] = {0};
+ u8 log_eq_stride = ilog2(MLX5_EQE_SIZE);
struct mlx5_priv *priv = &dev->priv;
u8 vecidx = param->irq_index;
__be64 *pas;
@@ -297,16 +299,18 @@ create_map_eq(struct mlx5_core_dev *dev, struct mlx5_eq *eq,
spin_lock_init(&cq_table->lock);
INIT_RADIX_TREE(&cq_table->tree, GFP_ATOMIC);
- eq->nent = roundup_pow_of_two(param->nent + MLX5_NUM_SPARE_EQE);
eq->cons_index = 0;
- err = mlx5_buf_alloc(dev, eq->nent * MLX5_EQE_SIZE, &eq->buf);
+
+ err = mlx5_frag_buf_alloc_node(dev, wq_get_byte_sz(log_eq_size, log_eq_stride),
+ &eq->frag_buf, dev->priv.numa_node);
if (err)
return err;
+ mlx5_init_fbc(eq->frag_buf.frags, log_eq_stride, log_eq_size, &eq->fbc);
init_eq_buf(eq);
inlen = MLX5_ST_SZ_BYTES(create_eq_in) +
- MLX5_FLD_SZ_BYTES(create_eq_in, pas[0]) * eq->buf.npages;
+ MLX5_FLD_SZ_BYTES(create_eq_in, pas[0]) * eq->frag_buf.npages;
in = kvzalloc(inlen, GFP_KERNEL);
if (!in) {
@@ -315,7 +319,7 @@ create_map_eq(struct mlx5_core_dev *dev, struct mlx5_eq *eq,
}
pas = (__be64 *)MLX5_ADDR_OF(create_eq_in, in, pas);
- mlx5_fill_page_array(&eq->buf, pas);
+ mlx5_fill_page_frag_array(&eq->frag_buf, pas);
MLX5_SET(create_eq_in, in, opcode, MLX5_CMD_OP_CREATE_EQ);
if (!param->mask[0] && MLX5_CAP_GEN(dev, log_max_uctx))
@@ -326,11 +330,11 @@ create_map_eq(struct mlx5_core_dev *dev, struct mlx5_eq *eq,
param->mask[i]);
eqc = MLX5_ADDR_OF(create_eq_in, in, eq_context_entry);
- MLX5_SET(eqc, eqc, log_eq_size, ilog2(eq->nent));
+ MLX5_SET(eqc, eqc, log_eq_size, eq->fbc.log_sz);
MLX5_SET(eqc, eqc, uar_page, priv->uar->index);
MLX5_SET(eqc, eqc, intr, vecidx);
MLX5_SET(eqc, eqc, log_page_size,
- eq->buf.page_shift - MLX5_ADAPTER_PAGE_SHIFT);
+ eq->frag_buf.page_shift - MLX5_ADAPTER_PAGE_SHIFT);
err = mlx5_cmd_exec(dev, in, inlen, out, sizeof(out));
if (err)
@@ -356,7 +360,7 @@ create_map_eq(struct mlx5_core_dev *dev, struct mlx5_eq *eq,
kvfree(in);
err_buf:
- mlx5_buf_free(dev, &eq->buf);
+ mlx5_frag_buf_free(dev, &eq->frag_buf);
return err;
}
@@ -413,7 +417,7 @@ static int destroy_unmap_eq(struct mlx5_core_dev *dev, struct mlx5_eq *eq)
eq->eqn);
synchronize_irq(eq->irqn);
- mlx5_buf_free(dev, &eq->buf);
+ mlx5_frag_buf_free(dev, &eq->frag_buf);
return err;
}
@@ -764,10 +768,11 @@ EXPORT_SYMBOL(mlx5_eq_destroy_generic);
struct mlx5_eqe *mlx5_eq_get_eqe(struct mlx5_eq *eq, u32 cc)
{
u32 ci = eq->cons_index + cc;
+ u32 nent = eq_get_size(eq);
struct mlx5_eqe *eqe;
- eqe = get_eqe(eq, ci & (eq->nent - 1));
- eqe = ((eqe->owner & 1) ^ !!(ci & eq->nent)) ? NULL : eqe;
+ eqe = get_eqe(eq, ci & (nent - 1));
+ eqe = ((eqe->owner & 1) ^ !!(ci & nent)) ? NULL : eqe;
/* Make sure we read EQ entry contents after we've
* checked the ownership bit.
*/
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lib/eq.h b/drivers/net/ethernet/mellanox/mlx5/core/lib/eq.h
index 81f2cc4ca1da..f607a3858ef5 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/lib/eq.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/lib/eq.h
@@ -22,15 +22,15 @@ struct mlx5_cq_table {
};
struct mlx5_eq {
+ struct mlx5_frag_buf_ctrl fbc;
+ struct mlx5_frag_buf frag_buf;
struct mlx5_core_dev *dev;
struct mlx5_cq_table cq_table;
__be32 __iomem *doorbell;
u32 cons_index;
- struct mlx5_frag_buf buf;
unsigned int vecidx;
unsigned int irqn;
u8 eqn;
- int nent;
struct mlx5_rsc_debug *dbg;
};
@@ -47,16 +47,21 @@ struct mlx5_eq_comp {
struct list_head list;
};
+static inline u32 eq_get_size(struct mlx5_eq *eq)
+{
+ return eq->fbc.sz_m1 + 1;
+}
+
static inline struct mlx5_eqe *get_eqe(struct mlx5_eq *eq, u32 entry)
{
- return mlx5_buf_offset(&eq->buf, entry * MLX5_EQE_SIZE);
+ return mlx5_frag_buf_get_wqe(&eq->fbc, entry);
}
static inline struct mlx5_eqe *next_eqe_sw(struct mlx5_eq *eq)
{
- struct mlx5_eqe *eqe = get_eqe(eq, eq->cons_index & (eq->nent - 1));
+ struct mlx5_eqe *eqe = get_eqe(eq, eq->cons_index & eq->fbc.sz_m1);
- return ((eqe->owner & 1) ^ !!(eq->cons_index & eq->nent)) ? NULL : eqe;
+ return (eqe->owner ^ (eq->cons_index >> eq->fbc.log_sz)) & 1 ? NULL : eqe;
}
static inline void eq_update_ci(struct mlx5_eq *eq, int arm)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/wq.c b/drivers/net/ethernet/mellanox/mlx5/core/wq.c
index 01f075fac276..3091dd014650 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/wq.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/wq.c
@@ -34,11 +34,6 @@
#include "wq.h"
#include "mlx5_core.h"
-static u32 wq_get_byte_sz(u8 log_sz, u8 log_stride)
-{
- return ((u32)1 << log_sz) << log_stride;
-}
-
int mlx5_wq_cyc_create(struct mlx5_core_dev *mdev, struct mlx5_wq_param *param,
void *wqc, struct mlx5_wq_cyc *wq,
struct mlx5_wq_ctrl *wq_ctrl)
diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h
index 8fe51b4a781e..5c0422930b01 100644
--- a/include/linux/mlx5/driver.h
+++ b/include/linux/mlx5/driver.h
@@ -873,6 +873,11 @@ static inline u32 mlx5_base_mkey(const u32 key)
return key & 0xffffff00u;
}
+static inline u32 wq_get_byte_sz(u8 log_sz, u8 log_stride)
+{
+ return ((u32)1 << log_sz) << log_stride;
+}
+
static inline void mlx5_init_fbc_offset(struct mlx5_buf_list *frags,
u8 log_stride, u8 log_sz,
u16 strides_offset,
--
2.29.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH mlx5-next 6/9] RDMA/mlx5: Use represntor E-Switch when getting netdev and metadata
2021-03-11 7:09 ` [PATCH mlx5-next 6/9] RDMA/mlx5: Use represntor E-Switch when getting netdev and metadata Saeed Mahameed
@ 2021-03-11 17:33 ` Jason Gunthorpe
2021-03-11 20:43 ` Mark Bloch
2021-03-11 22:38 ` Saeed Mahameed
0 siblings, 2 replies; 14+ messages in thread
From: Jason Gunthorpe @ 2021-03-11 17:33 UTC (permalink / raw)
To: Saeed Mahameed
Cc: Saeed Mahameed, Leon Romanovsky, netdev, linux-rdma, Mark Bloch
On Wed, Mar 10, 2021 at 11:09:12PM -0800, Saeed Mahameed wrote:
> From: Mark Bloch <mbloch@nvidia.com>
>
> Now that a pointer to the managing E-Switch is stored in the representor
> use it.
>
> Signed-off-by: Mark Bloch <mbloch@nvidia.com>
> Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
> ---
> drivers/infiniband/hw/mlx5/fs.c | 2 +-
> drivers/infiniband/hw/mlx5/ib_rep.c | 2 +-
> drivers/infiniband/hw/mlx5/main.c | 3 +--
> 3 files changed, 3 insertions(+), 4 deletions(-)
Spelling error in the subject
> diff --git a/drivers/infiniband/hw/mlx5/fs.c b/drivers/infiniband/hw/mlx5/fs.c
> index 25da0b05b4e2..01370d9a871a 100644
> --- a/drivers/infiniband/hw/mlx5/fs.c
> +++ b/drivers/infiniband/hw/mlx5/fs.c
> @@ -879,7 +879,7 @@ static void mlx5_ib_set_rule_source_port(struct mlx5_ib_dev *dev,
> misc_parameters_2);
>
> MLX5_SET(fte_match_set_misc2, misc, metadata_reg_c_0,
> - mlx5_eswitch_get_vport_metadata_for_match(esw,
> + mlx5_eswitch_get_vport_metadata_for_match(rep->esw,
> rep->vport));
Why not change the esw reference above too?
Seems Ok otherwise
Acked-by: Jason Gunthorpe <jgg@nvidia.com>
Jason
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH mlx5-next 6/9] RDMA/mlx5: Use represntor E-Switch when getting netdev and metadata
2021-03-11 17:33 ` Jason Gunthorpe
@ 2021-03-11 20:43 ` Mark Bloch
2021-03-11 22:38 ` Saeed Mahameed
1 sibling, 0 replies; 14+ messages in thread
From: Mark Bloch @ 2021-03-11 20:43 UTC (permalink / raw)
To: Jason Gunthorpe, Saeed Mahameed
Cc: Saeed Mahameed, Leon Romanovsky, netdev, linux-rdma
On 3/11/21 7:33 PM, Jason Gunthorpe wrote:
> On Wed, Mar 10, 2021 at 11:09:12PM -0800, Saeed Mahameed wrote:
>> From: Mark Bloch <mbloch@nvidia.com>
>>
>> Now that a pointer to the managing E-Switch is stored in the representor
>> use it.
>>
>> Signed-off-by: Mark Bloch <mbloch@nvidia.com>
>> Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
>> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
>> ---
>> drivers/infiniband/hw/mlx5/fs.c | 2 +-
>> drivers/infiniband/hw/mlx5/ib_rep.c | 2 +-
>> drivers/infiniband/hw/mlx5/main.c | 3 +--
>> 3 files changed, 3 insertions(+), 4 deletions(-)
>
> Spelling error in the subject
>
>
>> diff --git a/drivers/infiniband/hw/mlx5/fs.c b/drivers/infiniband/hw/mlx5/fs.c
>> index 25da0b05b4e2..01370d9a871a 100644
>> --- a/drivers/infiniband/hw/mlx5/fs.c
>> +++ b/drivers/infiniband/hw/mlx5/fs.c
>> @@ -879,7 +879,7 @@ static void mlx5_ib_set_rule_source_port(struct mlx5_ib_dev *dev,
>> misc_parameters_2);
>>
>> MLX5_SET(fte_match_set_misc2, misc, metadata_reg_c_0,
>> - mlx5_eswitch_get_vport_metadata_for_match(esw,
>> + mlx5_eswitch_get_vport_metadata_for_match(rep->esw,
>> rep->vport));
>
> Why not change the esw reference above too?
The if that checks if metadata is enabled uses the eswitch that rule is going to be inserted to.
The representor has a pointer to the eswitch it was created on.
Mark
>
> Seems Ok otherwise
>
> Acked-by: Jason Gunthorpe <jgg@nvidia.com>
>
> Jason
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH mlx5-next 6/9] RDMA/mlx5: Use represntor E-Switch when getting netdev and metadata
2021-03-11 17:33 ` Jason Gunthorpe
2021-03-11 20:43 ` Mark Bloch
@ 2021-03-11 22:38 ` Saeed Mahameed
1 sibling, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2021-03-11 22:38 UTC (permalink / raw)
To: Jason Gunthorpe; +Cc: Leon Romanovsky, netdev, linux-rdma, Mark Bloch
On Thu, 2021-03-11 at 13:33 -0400, Jason Gunthorpe wrote:
> On Wed, Mar 10, 2021 at 11:09:12PM -0800, Saeed Mahameed wrote:
> > From: Mark Bloch <mbloch@nvidia.com>
> >
> > Now that a pointer to the managing E-Switch is stored in the
> > representor
> > use it.
> >
> > Signed-off-by: Mark Bloch <mbloch@nvidia.com>
> > Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
> > Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
> > ---
> > drivers/infiniband/hw/mlx5/fs.c | 2 +-
> > drivers/infiniband/hw/mlx5/ib_rep.c | 2 +-
> > drivers/infiniband/hw/mlx5/main.c | 3 +--
> > 3 files changed, 3 insertions(+), 4 deletions(-)
>
> Spelling error in the subject
>
Will fix this up before I apply the series,
Thanks !
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10
2021-03-11 7:09 [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10 Saeed Mahameed
` (8 preceding siblings ...)
2021-03-11 7:09 ` [PATCH mlx5-next 9/9] net/mlx5: Use order-0 allocations for EQs Saeed Mahameed
@ 2021-03-12 21:10 ` Saeed Mahameed
9 siblings, 0 replies; 14+ messages in thread
From: Saeed Mahameed @ 2021-03-12 21:10 UTC (permalink / raw)
To: Leon Romanovsky, netdev, linux-rdma
On Wed, 2021-03-10 at 23:09 -0800, Saeed Mahameed wrote:
> From: Saeed Mahameed <saeedm@nvidia.com>
>
> This series is targeting mlx5-next shared tree for mlx5
> netdev and rdma shared updates.
>
> From Mark, E-Switch cleanups and refactoring, and the addition
> of single FDB mode needed HW bits.
>
> From Mikhael, Remove unused struct field
>
> From Saeed, Cleanup W=1 prototype warning
>
> From Zheng, Esw related cleanup
>
> From Tariq, User order-0 page allocation for EQs
>
> In case of no objections, this series will be applied to mlx5-next
> first
> and then sent in one pull request to both netdev and rdma next trees.
>
> Thanks,
> Saeed
>
> Mark Bloch (5):
> net/mlx5: E-Switch, Add match on vhca id to default send rules
> net/mlx5: E-Switch, Add eswitch pointer to each representor
> RDMA/mlx5: Use represntor E-Switch when getting netdev and metadata
Series applied and fixed up the above spelling error.
Thanks.
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2021-03-12 21:11 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-11 7:09 [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10 Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 1/9] net/mlx5: Cleanup prototype warning Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 2/9] net/mlx5: simplify the return expression of mlx5_esw_offloads_pair() Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 3/9] net/mlx5: Remove unused mlx5_core_health member recover_work Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 4/9] net/mlx5: E-Switch, Add match on vhca id to default send rules Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 5/9] net/mlx5: E-Switch, Add eswitch pointer to each representor Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 6/9] RDMA/mlx5: Use represntor E-Switch when getting netdev and metadata Saeed Mahameed
2021-03-11 17:33 ` Jason Gunthorpe
2021-03-11 20:43 ` Mark Bloch
2021-03-11 22:38 ` Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 7/9] net/mlx5: E-Switch, Refactor send to vport to be more generic Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 8/9] net/mlx5: Add IFC bits needed for single FDB mode Saeed Mahameed
2021-03-11 7:09 ` [PATCH mlx5-next 9/9] net/mlx5: Use order-0 allocations for EQs Saeed Mahameed
2021-03-12 21:10 ` [PATCH mlx5-next 0/9] mlx5 next updates 2021-03-10 Saeed Mahameed
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.