/* SPDX-License-Identifier: BSD-3-Clause
* Copyright 2017 6WIND S.A.
- * Copyright 2017 Mellanox.
+ * Copyright 2017 Mellanox Technologies, Ltd
*/
#include <unistd.h>
/* the end */
break;
}
+ sdev->remove = 0;
failsafe_hotplug_alarm_install(sdev->fs_dev);
}
FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_ACTIVE)
if (sdev->remove && fs_rxtx_clean(sdev)) {
+ if (fs_lock(dev, 1) != 0)
+ return;
fs_dev_stats_save(sdev);
fs_dev_remove(sdev);
+ fs_unlock(dev, 1);
}
}
{
struct sub_device *sdev = cb_arg;
+ fs_lock(sdev->fs_dev, 0);
/* Switch as soon as possible tx_dev. */
fs_switch_dev(sdev->fs_dev, sdev);
/* Use safe bursts in any case. */
* the callback at the source of the current thread context.
*/
sdev->remove = 1;
+ fs_unlock(sdev->fs_dev, 0);
return 0;
}