| /* 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); |