flows[vport->index] = flow;
        }
 
+       if (mlx5_core_ec_sriov_enabled(esw->dev)) {
+               mlx5_esw_for_each_ec_vf_vport(esw, i, vport, mlx5_core_max_ec_vfs(esw->dev)) {
+                       if (i >= mlx5_core_max_ec_vfs(peer_dev))
+                               break;
+                       esw_set_peer_miss_rule_source_port(esw, peer_dev->priv.eswitch,
+                                                          spec, vport->vport);
+                       flow = mlx5_add_flow_rules(esw->fdb_table.offloads.slow_fdb,
+                                                  spec, &flow_act, &dest, 1);
+                       if (IS_ERR(flow)) {
+                               err = PTR_ERR(flow);
+                               goto add_ec_vf_flow_err;
+                       }
+                       flows[vport->index] = flow;
+               }
+       }
        esw->fdb_table.offloads.peer_miss_rules[mlx5_get_dev_index(peer_dev)] = flows;
 
        kvfree(spec);
        return 0;
 
+add_ec_vf_flow_err:
+       mlx5_esw_for_each_ec_vf_vport(esw, i, vport, mlx5_core_max_ec_vfs(esw->dev)) {
+               if (!flows[vport->index])
+                       continue;
+               mlx5_del_flow_rules(flows[vport->index]);
+       }
 add_vf_flow_err:
        mlx5_esw_for_each_vf_vport(esw, i, vport, mlx5_core_max_vfs(esw->dev)) {
                if (!flows[vport->index])
 
        flows = esw->fdb_table.offloads.peer_miss_rules[mlx5_get_dev_index(peer_dev)];
 
+       if (mlx5_core_ec_sriov_enabled(esw->dev)) {
+               mlx5_esw_for_each_ec_vf_vport(esw, i, vport, mlx5_core_max_ec_vfs(esw->dev)) {
+                       /* The flow for a particular vport could be NULL if the other ECPF
+                        * has fewer or no VFs enabled
+                        */
+                       if (!flows[vport->index])
+                               continue;
+                       mlx5_del_flow_rules(flows[vport->index]);
+               }
+       }
+
        mlx5_esw_for_each_vf_vport(esw, i, vport, mlx5_core_max_vfs(esw->dev))
                mlx5_del_flow_rules(flows[vport->index]);