Linux 6.9-rc1
[linux-2.6-microblaze.git] / tools / include / uapi / linux / ethtool.h
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 */