1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 /* 3 * ethtool.h: Defines for Linux ethtool. 4 * 5 * Copyright (C) 1998 David S. Miller (davem@redhat.com) 6 * Copyright 2001 Jeff Garzik <jgarzik@pobox.com> 7 * Portions Copyright 2001 Sun Microsystems (thockin@sun.com) 8 * Portions Copyright 2002 Intel (eli.kupermann@intel.com, 9 * christopher.leech@intel.com, 10 * scott.feldman@intel.com) 11 * Portions Copyright (C) Sun Microsystems 2008 12 */ 13 14 #ifndef _UAPI_LINUX_ETHTOOL_H 15 #define _UAPI_LINUX_ETHTOOL_H 16 17 #include <linux/kernel.h> 18 #include <linux/types.h> 19 #include <linux/if_ether.h> 20 21 #define ETHTOOL_GCHANNELS 0x0000003c /* Get no of channels */ 22 23 /** 24 * struct ethtool_channels - configuring number of network channel 25 * @cmd: ETHTOOL_{G,S}CHANNELS 26 * @max_rx: Read only. Maximum number of receive channel the driver support. 27 * @max_tx: Read only. Maximum number of transmit channel the driver support. 28 * @max_other: Read only. Maximum number of other channel the driver support. 29 * @max_combined: Read only. Maximum number of combined channel the driver 30 * support. Set of queues RX, TX or other. 31 * @rx_count: Valid values are in the range 1 to the max_rx. 32 * @tx_count: Valid values are in the range 1 to the max_tx. 33 * @other_count: Valid values are in the range 1 to the max_other. 34 * @combined_count: Valid values are in the range 1 to the max_combined. 35 * 36 * This can be used to configure RX, TX and other channels. 37 */ 38 39 struct ethtool_channels { 40 __u32 cmd; 41 __u32 max_rx; 42 __u32 max_tx; 43 __u32 max_other; 44 __u32 max_combined; 45 __u32 rx_count; 46 __u32 tx_count; 47 __u32 other_count; 48 __u32 combined_count; 49 }; 50 51 #define ETHTOOL_FWVERS_LEN 32 52 #define ETHTOOL_BUSINFO_LEN 32 53 #define ETHTOOL_EROMVERS_LEN 32 54 55 /** 56 * struct ethtool_drvinfo - general driver and device information 57 * @cmd: Command number = %ETHTOOL_GDRVINFO 58 * @driver: Driver short name. This should normally match the name 59 * in its bus driver structure (e.g. pci_driver::name). Must 60 * not be an empty string. 61 * @version: Driver version string; may be an empty string 62 * @fw_version: Firmware version string; may be an empty string 63 * @erom_version: Expansion ROM version string; may be an empty string 64 * @bus_info: Device bus address. This should match the dev_name() 65 * string for the underlying bus device, if there is one. May be 66 * an empty string. 67 * @reserved2: Reserved for future use; see the note on reserved space. 68 * @n_priv_flags: Number of flags valid for %ETHTOOL_GPFLAGS and 69 * %ETHTOOL_SPFLAGS commands; also the number of strings in the 70 * %ETH_SS_PRIV_FLAGS set 71 * @n_stats: Number of u64 statistics returned by the %ETHTOOL_GSTATS 72 * command; also the number of strings in the %ETH_SS_STATS set 73 * @testinfo_len: Number of results returned by the %ETHTOOL_TEST 74 * command; also the number of strings in the %ETH_SS_TEST set 75 * @eedump_len: Size of EEPROM accessible through the %ETHTOOL_GEEPROM 76 * and %ETHTOOL_SEEPROM commands, in bytes 77 * @regdump_len: Size of register dump returned by the %ETHTOOL_GREGS 78 * command, in bytes 79 * 80 * Users can use the %ETHTOOL_GSSET_INFO command to get the number of 81 * strings in any string set (from Linux 2.6.34). 82 * 83 * Drivers should set at most @driver, @version, @fw_version and 84 * @bus_info in their get_drvinfo() implementation. The ethtool 85 * core fills in the other fields using other driver operations. 86 */ 87 struct ethtool_drvinfo { 88 __u32 cmd; 89 char driver[32]; 90 char version[32]; 91 char fw_version[ETHTOOL_FWVERS_LEN]; 92 char bus_info[ETHTOOL_BUSINFO_LEN]; 93 char erom_version[ETHTOOL_EROMVERS_LEN]; 94 char reserved2[12]; 95 __u32 n_priv_flags; 96 __u32 n_stats; 97 __u32 testinfo_len; 98 __u32 eedump_len; 99 __u32 regdump_len; 100 }; 101 102 #define ETHTOOL_GDRVINFO 0x00000003 103 104 #endif /* _UAPI_LINUX_ETHTOOL_H */ 105