|  | /* SPDX-License-Identifier: GPL-2.0-only */ | 
|  |  | 
|  | #include <uapi/linux/ethtool.h> | 
|  | #include "netlink.h" | 
|  |  | 
|  | /** | 
|  | * struct ethnl_module_fw_flash_ntf_params - module firmware flashing | 
|  | *						notifications parameters | 
|  | * @portid: Netlink portid of sender. | 
|  | * @seq: Sequence number of sender. | 
|  | * @closed_sock: Indicates whether the socket was closed from user space. | 
|  | */ | 
|  | struct ethnl_module_fw_flash_ntf_params { | 
|  | u32 portid; | 
|  | u32 seq; | 
|  | bool closed_sock; | 
|  | }; | 
|  |  | 
|  | /** | 
|  | * struct ethtool_module_fw_flash_params - module firmware flashing parameters | 
|  | * @password: Module password. Only valid when @pass_valid is set. | 
|  | * @password_valid: Whether the module password is valid or not. | 
|  | */ | 
|  | struct ethtool_module_fw_flash_params { | 
|  | __be32 password; | 
|  | u8 password_valid:1; | 
|  | }; | 
|  |  | 
|  | /** | 
|  | * struct ethtool_cmis_fw_update_params - CMIS firmware update specific | 
|  | *						parameters | 
|  | * @dev: Pointer to the net_device to be flashed. | 
|  | * @params: Module firmware flashing parameters. | 
|  | * @ntf_params: Module firmware flashing notification parameters. | 
|  | * @fw: Firmware to flash. | 
|  | */ | 
|  | struct ethtool_cmis_fw_update_params { | 
|  | struct net_device *dev; | 
|  | struct ethtool_module_fw_flash_params params; | 
|  | struct ethnl_module_fw_flash_ntf_params ntf_params; | 
|  | const struct firmware *fw; | 
|  | }; | 
|  |  | 
|  | /** | 
|  | * struct ethtool_module_fw_flash - module firmware flashing | 
|  | * @list: List node for &module_fw_flash_work_list. | 
|  | * @dev_tracker: Refcount tracker for @dev. | 
|  | * @work: The flashing firmware work. | 
|  | * @fw_update: CMIS firmware update specific parameters. | 
|  | */ | 
|  | struct ethtool_module_fw_flash { | 
|  | struct list_head list; | 
|  | netdevice_tracker dev_tracker; | 
|  | struct work_struct work; | 
|  | struct ethtool_cmis_fw_update_params fw_update; | 
|  | }; | 
|  |  | 
|  | void ethnl_module_fw_flash_sock_destroy(struct ethnl_sock_priv *sk_priv); | 
|  |  | 
|  | void | 
|  | ethnl_module_fw_flash_ntf_err(struct net_device *dev, | 
|  | struct ethnl_module_fw_flash_ntf_params *params, | 
|  | char *err_msg, char *sub_err_msg); | 
|  | void | 
|  | ethnl_module_fw_flash_ntf_start(struct net_device *dev, | 
|  | struct ethnl_module_fw_flash_ntf_params *params); | 
|  | void | 
|  | ethnl_module_fw_flash_ntf_complete(struct net_device *dev, | 
|  | struct ethnl_module_fw_flash_ntf_params *params); | 
|  | void | 
|  | ethnl_module_fw_flash_ntf_in_progress(struct net_device *dev, | 
|  | struct ethnl_module_fw_flash_ntf_params *params, | 
|  | u64 done, u64 total); | 
|  |  | 
|  | void ethtool_cmis_fw_update(struct ethtool_cmis_fw_update_params *params); |