MCPcopy Create free account
hub / github.com/F-Stack/f-stack / failsafe_eth_dev_close

Function failsafe_eth_dev_close

dpdk/drivers/net/failsafe/failsafe_ops.c:663–717  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

661}
662
663int
664failsafe_eth_dev_close(struct rte_eth_dev *dev)
665{
666 struct sub_device *sdev;
667 uint8_t i;
668 int err, ret = 0;
669
670 ret = fs_lock(dev, 0);
671 if (ret != 0)
672 return ret;
673 failsafe_hotplug_alarm_cancel(dev);
674 if (PRIV(dev)->state == DEV_STARTED) {
675 ret = dev->dev_ops->dev_stop(dev);
676 if (ret != 0) {
677 fs_unlock(dev, 0);
678 return ret;
679 }
680 }
681 PRIV(dev)->state = DEV_ACTIVE - 1;
682 FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_ACTIVE) {
683 DEBUG("Closing sub_device %d", i);
684 failsafe_eth_dev_unregister_callbacks(sdev);
685 err = rte_eth_dev_close(PORT_ID(sdev));
686 if (err) {
687 ret = ret ? ret : err;
688 ERROR("Error while closing sub-device %u",
689 PORT_ID(sdev));
690 }
691 sdev->state = DEV_ACTIVE - 1;
692 }
693 rte_eth_dev_callback_unregister(RTE_ETH_ALL, RTE_ETH_EVENT_NEW,
694 failsafe_eth_new_event_callback, dev);
695 if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
696 fs_unlock(dev, 0);
697 return ret;
698 }
699 fs_dev_free_queues(dev);
700 err = failsafe_eal_uninit(dev);
701 if (err) {
702 ret = ret ? ret : err;
703 ERROR("Error while uninitializing sub-EAL");
704 }
705 failsafe_args_free(dev);
706 rte_free(PRIV(dev)->subs);
707 rte_free(PRIV(dev)->mcast_addrs);
708 /* mac_addrs must not be freed alone because part of dev_private */
709 dev->data->mac_addrs = NULL;
710 fs_unlock(dev, 0);
711 err = pthread_mutex_destroy(&PRIV(dev)->hotplug_mutex);
712 if (err) {
713 ret = ret ? ret : err;
714 ERROR("Error while destroying hotplug mutex");
715 }
716 return ret;
717}
718
719static int
720fs_promiscuous_enable(struct rte_eth_dev *dev)

Callers 1

fs_rte_eth_freeFunction · 0.85

Calls 13

fs_lockFunction · 0.85
fs_unlockFunction · 0.85
FOREACH_SUBDEV_STATEFunction · 0.85
rte_eth_dev_closeFunction · 0.85
rte_eal_process_typeFunction · 0.85
fs_dev_free_queuesFunction · 0.85
failsafe_eal_uninitFunction · 0.85
failsafe_args_freeFunction · 0.85
rte_freeFunction · 0.85

Tested by

no test coverage detected