mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-25 05:19:26 +07:00
net/mlx5: E-Switch, Add offloads table
Belongs to the NIC offloads name-space, and to be used as part of the SRIOV offloads logic to steer packets that hit the e-switch miss rule to the TIR of the relevant VF representor. Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
acbc2004d7
commit
c116c6eec6
@ -155,6 +155,10 @@ enum {
|
||||
SRIOV_OFFLOADS
|
||||
};
|
||||
|
||||
struct mlx5_esw_offload {
|
||||
struct mlx5_flow_table *ft_offloads;
|
||||
};
|
||||
|
||||
struct mlx5_eswitch {
|
||||
struct mlx5_core_dev *dev;
|
||||
struct mlx5_l2_table l2_table;
|
||||
@ -169,6 +173,7 @@ struct mlx5_eswitch {
|
||||
*/
|
||||
struct mutex state_lock;
|
||||
struct esw_mc_addr *mc_promisc;
|
||||
struct mlx5_esw_offload offloads;
|
||||
int mode;
|
||||
};
|
||||
|
||||
|
@ -212,3 +212,34 @@ void esw_destroy_offloads_fdb_table(struct mlx5_eswitch *esw)
|
||||
|
||||
mlx5_destroy_flow_table(esw->fdb_table.fdb);
|
||||
}
|
||||
|
||||
static int esw_create_offloads_table(struct mlx5_eswitch *esw)
|
||||
{
|
||||
struct mlx5_flow_namespace *ns;
|
||||
struct mlx5_flow_table *ft_offloads;
|
||||
struct mlx5_core_dev *dev = esw->dev;
|
||||
int err = 0;
|
||||
|
||||
ns = mlx5_get_flow_namespace(dev, MLX5_FLOW_NAMESPACE_OFFLOADS);
|
||||
if (!ns) {
|
||||
esw_warn(esw->dev, "Failed to get offloads flow namespace\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
ft_offloads = mlx5_create_flow_table(ns, 0, dev->priv.sriov.num_vfs + 2, 0);
|
||||
if (IS_ERR(ft_offloads)) {
|
||||
err = PTR_ERR(ft_offloads);
|
||||
esw_warn(esw->dev, "Failed to create offloads table, err %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
esw->offloads.ft_offloads = ft_offloads;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void esw_destroy_offloads_table(struct mlx5_eswitch *esw)
|
||||
{
|
||||
struct mlx5_esw_offload *offloads = &esw->offloads;
|
||||
|
||||
mlx5_destroy_flow_table(offloads->ft_offloads);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user