* @rss_lock: Protects entries in @rss_ctx. May be taken from
* within RTNL.
* @wol_enabled: Wake-on-LAN is enabled
+ * @module_fw_flash_in_progress: Module firmware flashing is in progress.
*/
struct ethtool_netdev_state {
struct xarray rss_ctx;
struct mutex rss_lock;
unsigned wol_enabled:1;
+ unsigned module_fw_flash_in_progress:1;
};
struct phy_device;
*
* @threaded: napi threaded mode is enabled
*
- * @module_fw_flash_in_progress: Module firmware flashing is in progress.
- *
* @net_notifier_list: List of per-net netdev notifier block
* that follow this device when it is moved
* to another network namespace.
bool proto_down;
bool threaded;
- unsigned module_fw_flash_in_progress:1;
struct list_head net_notifier_list;
#if IS_ENABLED(CONFIG_MACSEC)
{
const struct ethtool_ops *ops = dev->ethtool_ops;
- if (dev->module_fw_flash_in_progress) {
+ if (dev->ethtool->module_fw_flash_in_progress) {
NL_SET_ERR_MSG(extack,
"Module firmware flashing is in progress");
return -EBUSY;
if (!dev->ethtool_ops->get_link_ksettings)
return -EOPNOTSUPP;
- if (dev->module_fw_flash_in_progress)
+ if (dev->ethtool->module_fw_flash_in_progress)
return -EBUSY;
memset(&link_ksettings, 0, sizeof(link_ksettings));
if (!dev->ethtool_ops->reset)
return -EOPNOTSUPP;
- if (dev->module_fw_flash_in_progress)
+ if (dev->ethtool->module_fw_flash_in_progress)
return -EBUSY;
if (copy_from_user(&reset, useraddr, sizeof(reset)))
const struct ethtool_ops *ops = dev->ethtool_ops;
struct phy_device *phydev = dev->phydev;
- if (dev->module_fw_flash_in_progress)
+ if (dev->ethtool->module_fw_flash_in_progress)
return -EBUSY;
if (dev->sfp_bus)
const struct ethtool_ops *ops = dev->ethtool_ops;
struct phy_device *phydev = dev->phydev;
- if (dev->module_fw_flash_in_progress)
+ if (dev->ethtool->module_fw_flash_in_progress)
return -EBUSY;
if (dev->sfp_bus)
if (!ops->get_module_power_mode)
return 0;
- if (dev->module_fw_flash_in_progress) {
+ if (dev->ethtool->module_fw_flash_in_progress) {
NL_SET_ERR_MSG(extack,
"Module firmware flashing is in progress");
return -EBUSY;
if (!tb[ETHTOOL_A_MODULE_POWER_MODE_POLICY])
return 0;
- if (req_info->dev->module_fw_flash_in_progress) {
+ if (req_info->dev->ethtool->module_fw_flash_in_progress) {
NL_SET_ERR_MSG(info->extack,
"Module firmware flashing is in progress");
return -EBUSY;
ethtool_cmis_fw_update(&module_fw->fw_update);
module_flash_fw_work_list_del(&module_fw->list);
- module_fw->fw_update.dev->module_fw_flash_in_progress = false;
+ module_fw->fw_update.dev->ethtool->module_fw_flash_in_progress = false;
netdev_put(module_fw->fw_update.dev, &module_fw->dev_tracker);
release_firmware(module_fw->fw_update.fw);
kfree(module_fw);
if (err < 0)
goto err_release_firmware;
- dev->module_fw_flash_in_progress = true;
+ dev->ethtool->module_fw_flash_in_progress = true;
netdev_hold(dev, &module_fw->dev_tracker, GFP_KERNEL);
fw_update->dev = dev;
fw_update->ntf_params.portid = info->snd_portid;
return -EOPNOTSUPP;
}
- if (dev->module_fw_flash_in_progress) {
+ if (dev->ethtool->module_fw_flash_in_progress) {
NL_SET_ERR_MSG(extack, "Module firmware flashing already in progress");
return -EBUSY;
}
ethnl_notify_features(ptr);
break;
case NETDEV_PRE_UP:
- if (dev->module_fw_flash_in_progress) {
+ if (dev->ethtool->module_fw_flash_in_progress) {
NL_SET_ERR_MSG(extack, "Can't set port up while flashing module firmware");
return NOTIFY_BAD;
}