Lines Matching refs:module_fw
192 module_flash_fw_work_list_add(struct ethtool_module_fw_flash *module_fw, in module_flash_fw_work_list_add() argument
201 work->fw_update.dev == module_fw->fw_update.dev) { in module_flash_fw_work_list_add()
207 list_add_tail(&module_fw->list, &module_fw_flash_work_list); in module_flash_fw_work_list_add()
222 struct ethtool_module_fw_flash *module_fw; in module_flash_fw_work() local
224 module_fw = container_of(work, struct ethtool_module_fw_flash, work); in module_flash_fw_work()
226 ethtool_cmis_fw_update(&module_fw->fw_update); in module_flash_fw_work()
228 module_flash_fw_work_list_del(&module_fw->list); in module_flash_fw_work()
229 module_fw->fw_update.dev->ethtool->module_fw_flash_in_progress = false; in module_flash_fw_work()
230 netdev_put(module_fw->fw_update.dev, &module_fw->dev_tracker); in module_flash_fw_work()
231 release_firmware(module_fw->fw_update.fw); in module_flash_fw_work()
232 kfree(module_fw); in module_flash_fw_work()
238 static int module_flash_fw_work_init(struct ethtool_module_fw_flash *module_fw, in module_flash_fw_work_init() argument
268 INIT_WORK(&module_fw->work, module_flash_fw_work); in module_flash_fw_work_init()
300 struct ethtool_module_fw_flash *module_fw; in module_flash_fw_schedule() local
303 module_fw = kzalloc(sizeof(*module_fw), GFP_KERNEL); in module_flash_fw_schedule()
304 if (!module_fw) in module_flash_fw_schedule()
307 fw_update = &module_fw->fw_update; in module_flash_fw_schedule()
317 err = module_flash_fw_work_init(module_fw, dev, info->extack); in module_flash_fw_schedule()
322 netdev_hold(dev, &module_fw->dev_tracker, GFP_KERNEL); in module_flash_fw_schedule()
333 err = module_flash_fw_work_list_add(module_fw, info); in module_flash_fw_schedule()
337 schedule_work(&module_fw->work); in module_flash_fw_schedule()
344 kfree(module_fw); in module_flash_fw_schedule()