at master 2.4 kB view raw
1/* SPDX-License-Identifier: GPL-2.0-only */ 2 3#include <uapi/linux/ethtool.h> 4#include "netlink.h" 5 6/** 7 * struct ethnl_module_fw_flash_ntf_params - module firmware flashing 8 * notifications parameters 9 * @portid: Netlink portid of sender. 10 * @seq: Sequence number of sender. 11 * @closed_sock: Indicates whether the socket was closed from user space. 12 */ 13struct ethnl_module_fw_flash_ntf_params { 14 u32 portid; 15 u32 seq; 16 bool closed_sock; 17}; 18 19/** 20 * struct ethtool_module_fw_flash_params - module firmware flashing parameters 21 * @password: Module password. Only valid when @pass_valid is set. 22 * @password_valid: Whether the module password is valid or not. 23 */ 24struct ethtool_module_fw_flash_params { 25 __be32 password; 26 u8 password_valid:1; 27}; 28 29/** 30 * struct ethtool_cmis_fw_update_params - CMIS firmware update specific 31 * parameters 32 * @dev: Pointer to the net_device to be flashed. 33 * @params: Module firmware flashing parameters. 34 * @ntf_params: Module firmware flashing notification parameters. 35 * @fw: Firmware to flash. 36 */ 37struct ethtool_cmis_fw_update_params { 38 struct net_device *dev; 39 struct ethtool_module_fw_flash_params params; 40 struct ethnl_module_fw_flash_ntf_params ntf_params; 41 const struct firmware *fw; 42}; 43 44/** 45 * struct ethtool_module_fw_flash - module firmware flashing 46 * @list: List node for &module_fw_flash_work_list. 47 * @dev_tracker: Refcount tracker for @dev. 48 * @work: The flashing firmware work. 49 * @fw_update: CMIS firmware update specific parameters. 50 */ 51struct ethtool_module_fw_flash { 52 struct list_head list; 53 netdevice_tracker dev_tracker; 54 struct work_struct work; 55 struct ethtool_cmis_fw_update_params fw_update; 56}; 57 58void ethnl_module_fw_flash_sock_destroy(struct ethnl_sock_priv *sk_priv); 59 60void 61ethnl_module_fw_flash_ntf_err(struct net_device *dev, 62 struct ethnl_module_fw_flash_ntf_params *params, 63 char *err_msg, char *sub_err_msg); 64void 65ethnl_module_fw_flash_ntf_start(struct net_device *dev, 66 struct ethnl_module_fw_flash_ntf_params *params); 67void 68ethnl_module_fw_flash_ntf_complete(struct net_device *dev, 69 struct ethnl_module_fw_flash_ntf_params *params); 70void 71ethnl_module_fw_flash_ntf_in_progress(struct net_device *dev, 72 struct ethnl_module_fw_flash_ntf_params *params, 73 u64 done, u64 total); 74 75void ethtool_cmis_fw_update(struct ethtool_cmis_fw_update_params *params);