#include <linux/ethtool.h>
#include <linux/sfp.h>
#include "netlink.h"
#include "common.h"
struct eeprom_req_info { … };
struct eeprom_reply_data { … };
#define MODULE_EEPROM_REQINFO(__req_base) …
#define MODULE_EEPROM_REPDATA(__reply_base) …
static int fallback_set_params(struct eeprom_req_info *request,
struct ethtool_modinfo *modinfo,
struct ethtool_eeprom *eeprom)
{ … }
static int eeprom_fallback(struct eeprom_req_info *request,
struct eeprom_reply_data *reply)
{ … }
static int get_module_eeprom_by_page(struct net_device *dev,
struct ethtool_module_eeprom *page_data,
struct netlink_ext_ack *extack)
{ … }
static int eeprom_prepare_data(const struct ethnl_req_info *req_base,
struct ethnl_reply_data *reply_base,
const struct genl_info *info)
{ … }
static int eeprom_parse_request(struct ethnl_req_info *req_info, struct nlattr **tb,
struct netlink_ext_ack *extack)
{ … }
static int eeprom_reply_size(const struct ethnl_req_info *req_base,
const struct ethnl_reply_data *reply_base)
{ … }
static int eeprom_fill_reply(struct sk_buff *skb,
const struct ethnl_req_info *req_base,
const struct ethnl_reply_data *reply_base)
{ … }
static void eeprom_cleanup_data(struct ethnl_reply_data *reply_base)
{ … }
const struct ethnl_request_ops ethnl_module_eeprom_request_ops = …;
const struct nla_policy ethnl_module_eeprom_get_policy[] = …;