summaryrefslogtreecommitdiff
path: root/src/basic/missing_ethtool.h
blob: 9ba929c6329ac65c3db6052b97b811f664e3d99d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/* SPDX-License-Identifier: LGPL-2.1+ */
#pragma once

#include <linux/types.h>

/* Missing definitions in ethtool.h */

#if !HAVE_ETHTOOL_LINK_MODE_10baseT_Half_BIT /* linux@3f1ac7a700d039c61d8d8b99f28d605d489a60cf (4.6) */

#define ETHTOOL_GLINKSETTINGS   0x0000004c /* Get ethtool_link_settings */
#define ETHTOOL_SLINKSETTINGS   0x0000004d /* Set ethtool_link_settings */

struct ethtool_link_settings {
        __u32 cmd;
        __u32 speed;
        __u8  duplex;
        __u8  port;
        __u8  phy_address;
        __u8  autoneg;
        __u8  mdio_support;
        __u8  eth_tp_mdix;
        __u8  eth_tp_mdix_ctrl;
        __s8  link_mode_masks_nwords;
        __u8  transceiver;
        __u8  reserved1[3];
        __u32 reserved[7];
        __u32 link_mode_masks[0];
        /* layout of link_mode_masks fields:
         * __u32 map_supported[link_mode_masks_nwords];
         * __u32 map_advertising[link_mode_masks_nwords];
         * __u32 map_lp_advertising[link_mode_masks_nwords];
         */
};

enum ethtool_link_mode_bit_indices {
        ETHTOOL_LINK_MODE_10baseT_Half_BIT           = 0,
        ETHTOOL_LINK_MODE_10baseT_Full_BIT           = 1,
        ETHTOOL_LINK_MODE_100baseT_Half_BIT          = 2,
        ETHTOOL_LINK_MODE_100baseT_Full_BIT          = 3,
        ETHTOOL_LINK_MODE_1000baseT_Half_BIT         = 4,
        ETHTOOL_LINK_MODE_1000baseT_Full_BIT         = 5,
        ETHTOOL_LINK_MODE_Autoneg_BIT                = 6,
        ETHTOOL_LINK_MODE_TP_BIT                     = 7,
        ETHTOOL_LINK_MODE_AUI_BIT                    = 8,
        ETHTOOL_LINK_MODE_MII_BIT                    = 9,
        ETHTOOL_LINK_MODE_FIBRE_BIT                  = 10,
        ETHTOOL_LINK_MODE_BNC_BIT                    = 11,
        ETHTOOL_LINK_MODE_10000baseT_Full_BIT        = 12,
        ETHTOOL_LINK_MODE_Pause_BIT                  = 13,
        ETHTOOL_LINK_MODE_Asym_Pause_BIT             = 14,
        ETHTOOL_LINK_MODE_2500baseX_Full_BIT         = 15,
        ETHTOOL_LINK_MODE_Backplane_BIT              = 16,
        ETHTOOL_LINK_MODE_1000baseKX_Full_BIT        = 17,
        ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT      = 18,
        ETHTOOL_LINK_MODE_10000baseKR_Full_BIT       = 19,
        ETHTOOL_LINK_MODE_10000baseR_FEC_BIT         = 20,
        ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT     = 21,
        ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT      = 22,
        ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT      = 23,
        ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT      = 24,
        ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT      = 25,
        ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT      = 26,
        ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT      = 27,
        ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT      = 28,
        ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT      = 29,
        ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT      = 30,
        ETHTOOL_LINK_MODE_25000baseCR_Full_BIT       = 31,
        ETHTOOL_LINK_MODE_25000baseKR_Full_BIT       = 32,
        ETHTOOL_LINK_MODE_25000baseSR_Full_BIT       = 33,
        ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT      = 34,
        ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT      = 35,
        ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT     = 36,
        ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT     = 37,
        ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT     = 38,
        ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT = 39,
        ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT      = 40,
        ETHTOOL_LINK_MODE_1000baseX_Full_BIT         = 41,
        ETHTOOL_LINK_MODE_10000baseCR_Full_BIT       = 42,
        ETHTOOL_LINK_MODE_10000baseSR_Full_BIT       = 43,
        ETHTOOL_LINK_MODE_10000baseLR_Full_BIT       = 44,
        ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT      = 45,
        ETHTOOL_LINK_MODE_10000baseER_Full_BIT       = 46,
        ETHTOOL_LINK_MODE_2500baseT_Full_BIT         = 47,
        ETHTOOL_LINK_MODE_5000baseT_Full_BIT         = 48,

        ETHTOOL_LINK_MODE_FEC_NONE_BIT               = 49,
        ETHTOOL_LINK_MODE_FEC_RS_BIT                 = 50,
        ETHTOOL_LINK_MODE_FEC_BASER_BIT              = 51,

        /* Last allowed bit for __ETHTOOL_LINK_MODE_LEGACY_MASK is bit
         * 31. Please do NOT define any SUPPORTED_* or ADVERTISED_*
         * macro for bits > 31. The only way to use indices > 31 is to
         * use the new ETHTOOL_GLINKSETTINGS/ETHTOOL_SLINKSETTINGS API.
         */

        __ETHTOOL_LINK_MODE_LAST
          = ETHTOOL_LINK_MODE_FEC_BASER_BIT,
};
#else
#if !HAVE_ETHTOOL_LINK_MODE_25000baseCR_Full_BIT /* linux@3851112e4737cd52aaeda0ce8d084be9ee128106 (4.7) */
#define ETHTOOL_LINK_MODE_25000baseCR_Full_BIT       31
#define ETHTOOL_LINK_MODE_25000baseKR_Full_BIT       32
#define ETHTOOL_LINK_MODE_25000baseSR_Full_BIT       33
#define ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT      34
#define ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT      35
#define ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT     36
#define ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT     37
#define ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT     38
#define ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT 39
#endif
#if !HAVE_ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT /* linux@89da45b8b5b2187734a11038b8593714f964ffd1 (4.8) */
#define ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT      40
#endif
#if !HAVE_ETHTOOL_LINK_MODE_1000baseX_Full_BIT /* linux@5711a98221443aec54c4c81ee98c6ae46acccb65 (4.9) */
#define ETHTOOL_LINK_MODE_1000baseX_Full_BIT         41
#define ETHTOOL_LINK_MODE_10000baseCR_Full_BIT       42
#define ETHTOOL_LINK_MODE_10000baseSR_Full_BIT       43
#define ETHTOOL_LINK_MODE_10000baseLR_Full_BIT       44
#define ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT      45
#define ETHTOOL_LINK_MODE_10000baseER_Full_BIT       46
#endif
#if !HAVE_ETHTOOL_LINK_MODE_2500baseT_Full_BIT /* linux@94842b4fc4d6b1691cfc86c6f5251f299d27f4ba (4.10) */
#define ETHTOOL_LINK_MODE_2500baseT_Full_BIT         47
#define ETHTOOL_LINK_MODE_5000baseT_Full_BIT         48
#endif
#if !HAVE_ETHTOOL_LINK_MODE_FEC_NONE_BIT /* linux@1a5f3da20bd966220931239fbd31e6ac6ff42251 (4.14) */
#define ETHTOOL_LINK_MODE_FEC_NONE_BIT               49
#define ETHTOOL_LINK_MODE_FEC_RS_BIT                 50
#define ETHTOOL_LINK_MODE_FEC_BASER_BIT              51
#endif
#endif