+ if (priv->isolated) {
+ DRV_LOG(WARNING,
+ "port %u cannot enable allmulticast mode"
+ " in flow isolation mode",
+ dev->data->port_id);
+ return 0;
+ }
+ if (priv->sh->dev_cap.vf || priv->sh->dev_cap.sf) {
+ ret = mlx5_os_set_allmulti(dev, 1);
+ if (ret)
+ goto error;
+ }
+ ret = mlx5_traffic_restart(dev);
+ if (ret)
+ DRV_LOG(ERR, "port %u cannot enable allmulicast mode: %s",
+ dev->data->port_id, strerror(rte_errno));
+error:
+ /*
+ * rte_eth_allmulticast_enable() rollback
+ * dev->data->all_multicast in the case of failure.
+ */
+ return ret;