// SPDX-License-Identifier: GPL-2.0-only /* * Copyright (C) 1999 - 2010 Intel Corporation. * Copyright (C) 2010 OKI SEMICONDUCTOR Co., LTD. * * This code was derived from the Intel e1000e Linux driver. */ #include "pch_gbe.h" #include "pch_gbe_phy.h" static const char pch_driver_version[] = …; /* * pch_gbe_stats - Stats item information */ struct pch_gbe_stats { … }; #define PCH_GBE_STAT(m) … /* * pch_gbe_gstrings_stats - ethtool information status name list */ static const struct pch_gbe_stats pch_gbe_gstrings_stats[] = …; #define PCH_GBE_QUEUE_STATS_LEN … #define PCH_GBE_GLOBAL_STATS_LEN … #define PCH_GBE_STATS_LEN … #define PCH_GBE_MAC_REGS_LEN … #define PCH_GBE_REGS_LEN … /** * pch_gbe_get_link_ksettings - Get device-specific settings * @netdev: Network interface device structure * @ecmd: Ethtool command * Returns: * 0: Successful. * Negative value: Failed. */ static int pch_gbe_get_link_ksettings(struct net_device *netdev, struct ethtool_link_ksettings *ecmd) { … } /** * pch_gbe_set_link_ksettings - Set device-specific settings * @netdev: Network interface device structure * @ecmd: Ethtool command * Returns: * 0: Successful. * Negative value: Failed. */ static int pch_gbe_set_link_ksettings(struct net_device *netdev, const struct ethtool_link_ksettings *ecmd) { … } /** * pch_gbe_get_regs_len - Report the size of device registers * @netdev: Network interface device structure * Returns: the size of device registers. */ static int pch_gbe_get_regs_len(struct net_device *netdev) { … } /** * pch_gbe_get_drvinfo - Report driver information * @netdev: Network interface device structure * @drvinfo: Driver information structure */ static void pch_gbe_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo) { … } /** * pch_gbe_get_regs - Get device registers * @netdev: Network interface device structure * @regs: Ethtool register structure * @p: Buffer pointer of read device register date */ static void pch_gbe_get_regs(struct net_device *netdev, struct ethtool_regs *regs, void *p) { … } /** * pch_gbe_get_wol - Report whether Wake-on-Lan is enabled * @netdev: Network interface device structure * @wol: Wake-on-Lan information */ static void pch_gbe_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol) { … } /** * pch_gbe_set_wol - Turn Wake-on-Lan on or off * @netdev: Network interface device structure * @wol: Pointer of wake-on-Lan information straucture * Returns: * 0: Successful. * Negative value: Failed. */ static int pch_gbe_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol) { … } /** * pch_gbe_nway_reset - Restart autonegotiation * @netdev: Network interface device structure * Returns: * 0: Successful. * Negative value: Failed. */ static int pch_gbe_nway_reset(struct net_device *netdev) { … } /** * pch_gbe_get_ringparam - Report ring sizes * @netdev: Network interface device structure * @ring: Ring param structure * @kernel_ring: Ring external param structure * @extack: netlink handle */ static void pch_gbe_get_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring, struct kernel_ethtool_ringparam *kernel_ring, struct netlink_ext_ack *extack) { … } /** * pch_gbe_set_ringparam - Set ring sizes * @netdev: Network interface device structure * @ring: Ring param structure * @kernel_ring: Ring external param structure * @extack: netlink handle * Returns * 0: Successful. * Negative value: Failed. */ static int pch_gbe_set_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring, struct kernel_ethtool_ringparam *kernel_ring, struct netlink_ext_ack *extack) { … } /** * pch_gbe_get_pauseparam - Report pause parameters * @netdev: Network interface device structure * @pause: Pause parameters structure */ static void pch_gbe_get_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *pause) { … } /** * pch_gbe_set_pauseparam - Set pause parameters * @netdev: Network interface device structure * @pause: Pause parameters structure * Returns: * 0: Successful. * Negative value: Failed. */ static int pch_gbe_set_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *pause) { … } /** * pch_gbe_get_strings - Return a set of strings that describe the requested * objects * @netdev: Network interface device structure * @stringset: Select the stringset. [ETH_SS_TEST] [ETH_SS_STATS] * @data: Pointer of read string data. */ static void pch_gbe_get_strings(struct net_device *netdev, u32 stringset, u8 *data) { … } /** * pch_gbe_get_ethtool_stats - Return statistics about the device * @netdev: Network interface device structure * @stats: Ethtool statue structure * @data: Pointer of read status area */ static void pch_gbe_get_ethtool_stats(struct net_device *netdev, struct ethtool_stats *stats, u64 *data) { … } static int pch_gbe_get_sset_count(struct net_device *netdev, int sset) { … } static const struct ethtool_ops pch_gbe_ethtool_ops = …; void pch_gbe_set_ethtool_ops(struct net_device *netdev) { … }