Lines Matching defs:esw

10 esw_acl_ingress_prio_tag_enabled(struct mlx5_eswitch *esw,
13 return (MLX5_CAP_GEN(esw->dev, prio_tag_required) &&
14 mlx5_eswitch_is_vf_vport(esw, vport->vport));
17 static int esw_acl_ingress_prio_tag_create(struct mlx5_eswitch *esw,
52 esw_warn(esw->dev,
62 static int esw_acl_ingress_mod_metadata_create(struct mlx5_eswitch *esw,
70 key = mlx5_eswitch_get_vport_metadata_for_match(esw, vport->vport);
83 mlx5_modify_header_alloc(esw->dev, MLX5_FLOW_NAMESPACE_ESW_INGRESS,
87 esw_warn(esw->dev,
101 esw_warn(esw->dev,
104 mlx5_modify_header_dealloc(esw->dev, vport->ingress.offloads.modify_metadata);
110 static void esw_acl_ingress_mod_metadata_destroy(struct mlx5_eswitch *esw,
117 mlx5_modify_header_dealloc(esw->dev, vport->ingress.offloads.modify_metadata);
121 static int esw_acl_ingress_src_port_drop_create(struct mlx5_eswitch *esw,
141 static void esw_acl_ingress_src_port_drop_destroy(struct mlx5_eswitch *esw,
151 static int esw_acl_ingress_ofld_rules_create(struct mlx5_eswitch *esw,
156 if (mlx5_eswitch_vport_match_metadata_enabled(esw)) {
157 err = esw_acl_ingress_mod_metadata_create(esw, vport);
159 esw_warn(esw->dev,
166 if (esw_acl_ingress_prio_tag_enabled(esw, vport)) {
167 err = esw_acl_ingress_prio_tag_create(esw, vport);
169 esw_warn(esw->dev,
179 esw_acl_ingress_mod_metadata_destroy(esw, vport);
183 static void esw_acl_ingress_ofld_rules_destroy(struct mlx5_eswitch *esw,
187 esw_acl_ingress_mod_metadata_destroy(esw, vport);
188 esw_acl_ingress_src_port_drop_destroy(esw, vport);
191 static int esw_acl_ingress_ofld_groups_create(struct mlx5_eswitch *esw,
215 esw_warn(esw->dev, "vport[%d] ingress create drop flow group, err(%d)\n",
223 if (esw_acl_ingress_prio_tag_enabled(esw, vport)) {
239 esw_warn(esw->dev, "vport[%d] ingress create untagged flow group, err(%d)\n",
247 if (mlx5_eswitch_vport_match_metadata_enabled(esw)) {
259 esw_warn(esw->dev, "vport[%d] ingress create drop flow group, err(%d)\n",
302 int esw_acl_ingress_ofld_setup(struct mlx5_eswitch *esw,
308 if (!mlx5_eswitch_vport_match_metadata_enabled(esw) &&
309 !esw_acl_ingress_prio_tag_enabled(esw, vport))
314 if (mlx5_eswitch_vport_match_metadata_enabled(esw))
318 if (esw_acl_ingress_prio_tag_enabled(esw, vport))
321 vport->ingress.acl = esw_acl_table_create(esw, vport,
330 err = esw_acl_ingress_ofld_groups_create(esw, vport);
334 esw_debug(esw->dev,
337 err = esw_acl_ingress_ofld_rules_create(esw, vport);
350 void esw_acl_ingress_ofld_cleanup(struct mlx5_eswitch *esw,
353 esw_acl_ingress_ofld_rules_destroy(esw, vport);
359 int mlx5_esw_acl_ingress_vport_metadata_update(struct mlx5_eswitch *esw, u16 vport_num,
362 struct mlx5_vport *vport = mlx5_eswitch_get_vport(esw, vport_num);
366 esw_warn(esw->dev, "vport(%d) invalid!\n", vport_num);
370 esw_acl_ingress_ofld_rules_destroy(esw, vport);
375 err = esw_acl_ingress_ofld_rules_create(esw, vport);
386 int mlx5_esw_acl_ingress_vport_drop_rule_create(struct mlx5_eswitch *esw, u16 vport_num)
388 struct mlx5_vport *vport = mlx5_eswitch_get_vport(esw, vport_num);
391 esw_warn(esw->dev, "vport(%d) invalid!\n", vport_num);
395 return esw_acl_ingress_src_port_drop_create(esw, vport);
398 void mlx5_esw_acl_ingress_vport_drop_rule_destroy(struct mlx5_eswitch *esw, u16 vport_num)
400 struct mlx5_vport *vport = mlx5_eswitch_get_vport(esw, vport_num);
403 esw_warn(esw->dev, "vport(%d) invalid!\n", vport_num);
407 esw_acl_ingress_src_port_drop_destroy(esw, vport);