X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Ffailsafe%2Ffailsafe_ether.c;h=178316521a29491749bbe4e3829cf10db161ca26;hb=742bde12f3bd008c2f06d744330436d8b1a56720;hp=191f95f147dadd2e8726ab682d5487117e2008db;hpb=b32c9075ee30f6b59fe2766cff8c65449cd4c062;p=dpdk.git diff --git a/drivers/net/failsafe/failsafe_ether.c b/drivers/net/failsafe/failsafe_ether.c index 191f95f147..178316521a 100644 --- a/drivers/net/failsafe/failsafe_ether.c +++ b/drivers/net/failsafe/failsafe_ether.c @@ -179,6 +179,23 @@ fs_eth_dev_conf_apply(struct rte_eth_dev *dev, return ret; } } + /* + * Propagate multicast MAC addresses to sub-devices, + * if non zero number of addresses is set. + * The condition is required to avoid breakage of failsafe + * for sub-devices which do not support the operation + * if the feature is really not used. + */ + if (PRIV(dev)->nb_mcast_addr > 0) { + DEBUG("Configuring multicast MAC addresses"); + ret = rte_eth_dev_set_mc_addr_list(PORT_ID(sdev), + PRIV(dev)->mcast_addrs, + PRIV(dev)->nb_mcast_addr); + if (ret) { + ERROR("Failed to apply multicast MAC addresses"); + return ret; + } + } /* VLAN filter */ vfc1 = &dev->data->vlan_filter_conf; vfc2 = &edev->data->vlan_filter_conf; @@ -230,9 +247,9 @@ fs_eth_dev_conf_apply(struct rte_eth_dev *dev, DEBUG("Creating flow #%" PRIu32, i++); flow->flows[SUB_ID(sdev)] = rte_flow_create(PORT_ID(sdev), - &flow->fd->attr, - flow->fd->items, - flow->fd->actions, + flow->rule.attr, + flow->rule.pattern, + flow->rule.actions, &ferror); ret = rte_errno; if (ret) @@ -265,8 +282,7 @@ fs_dev_remove(struct sub_device *sdev) sdev->state = DEV_PROBED; /* fallthrough */ case DEV_PROBED: - ret = rte_eal_hotplug_remove(sdev->bus->name, - sdev->dev->name); + ret = rte_dev_remove(sdev->dev); if (ret) { ERROR("Bus detach failed for sub_device %u", SUB_ID(sdev)); @@ -554,7 +570,7 @@ failsafe_eth_rmv_event_callback(uint16_t port_id __rte_unused, /* Switch as soon as possible tx_dev. */ fs_switch_dev(sdev->fs_dev, sdev); /* Use safe bursts in any case. */ - set_burst_fn(sdev->fs_dev, 1); + failsafe_set_burst_fn(sdev->fs_dev, 1); /* * Async removal, the sub-PMD will try to unregister * the callback at the source of the current thread context.