76 lines
2.3 KiB
C
76 lines
2.3 KiB
C
|
/* 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);
|