1 /* SPDX-License-Identifier: LGPL-2.1+ */
4 #include <linux/types.h>
6 /* Missing definitions in ethtool.h */
8 #if !HAVE_ETHTOOL_LINK_MODE_10baseT_Half_BIT /* linux@3f1ac7a700d039c61d8d8b99f28d605d489a60cf (4.6) */
10 #define ETHTOOL_GLINKSETTINGS 0x0000004c /* Get ethtool_link_settings */
11 #define ETHTOOL_SLINKSETTINGS 0x0000004d /* Set ethtool_link_settings */
13 struct ethtool_link_settings
{
22 __u8 eth_tp_mdix_ctrl
;
23 __s8 link_mode_masks_nwords
;
27 __u32 link_mode_masks
[0];
28 /* layout of link_mode_masks fields:
29 * __u32 map_supported[link_mode_masks_nwords];
30 * __u32 map_advertising[link_mode_masks_nwords];
31 * __u32 map_lp_advertising[link_mode_masks_nwords];
35 enum ethtool_link_mode_bit_indices
{
36 ETHTOOL_LINK_MODE_10baseT_Half_BIT
= 0,
37 ETHTOOL_LINK_MODE_10baseT_Full_BIT
= 1,
38 ETHTOOL_LINK_MODE_100baseT_Half_BIT
= 2,
39 ETHTOOL_LINK_MODE_100baseT_Full_BIT
= 3,
40 ETHTOOL_LINK_MODE_1000baseT_Half_BIT
= 4,
41 ETHTOOL_LINK_MODE_1000baseT_Full_BIT
= 5,
42 ETHTOOL_LINK_MODE_Autoneg_BIT
= 6,
43 ETHTOOL_LINK_MODE_TP_BIT
= 7,
44 ETHTOOL_LINK_MODE_AUI_BIT
= 8,
45 ETHTOOL_LINK_MODE_MII_BIT
= 9,
46 ETHTOOL_LINK_MODE_FIBRE_BIT
= 10,
47 ETHTOOL_LINK_MODE_BNC_BIT
= 11,
48 ETHTOOL_LINK_MODE_10000baseT_Full_BIT
= 12,
49 ETHTOOL_LINK_MODE_Pause_BIT
= 13,
50 ETHTOOL_LINK_MODE_Asym_Pause_BIT
= 14,
51 ETHTOOL_LINK_MODE_2500baseX_Full_BIT
= 15,
52 ETHTOOL_LINK_MODE_Backplane_BIT
= 16,
53 ETHTOOL_LINK_MODE_1000baseKX_Full_BIT
= 17,
54 ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT
= 18,
55 ETHTOOL_LINK_MODE_10000baseKR_Full_BIT
= 19,
56 ETHTOOL_LINK_MODE_10000baseR_FEC_BIT
= 20,
57 ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT
= 21,
58 ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT
= 22,
59 ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT
= 23,
60 ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT
= 24,
61 ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT
= 25,
62 ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT
= 26,
63 ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT
= 27,
64 ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT
= 28,
65 ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT
= 29,
66 ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT
= 30,
67 ETHTOOL_LINK_MODE_25000baseCR_Full_BIT
= 31,
68 ETHTOOL_LINK_MODE_25000baseKR_Full_BIT
= 32,
69 ETHTOOL_LINK_MODE_25000baseSR_Full_BIT
= 33,
70 ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT
= 34,
71 ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT
= 35,
72 ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT
= 36,
73 ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT
= 37,
74 ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT
= 38,
75 ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT
= 39,
76 ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT
= 40,
77 ETHTOOL_LINK_MODE_1000baseX_Full_BIT
= 41,
78 ETHTOOL_LINK_MODE_10000baseCR_Full_BIT
= 42,
79 ETHTOOL_LINK_MODE_10000baseSR_Full_BIT
= 43,
80 ETHTOOL_LINK_MODE_10000baseLR_Full_BIT
= 44,
81 ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT
= 45,
82 ETHTOOL_LINK_MODE_10000baseER_Full_BIT
= 46,
83 ETHTOOL_LINK_MODE_2500baseT_Full_BIT
= 47,
84 ETHTOOL_LINK_MODE_5000baseT_Full_BIT
= 48,
86 ETHTOOL_LINK_MODE_FEC_NONE_BIT
= 49,
87 ETHTOOL_LINK_MODE_FEC_RS_BIT
= 50,
88 ETHTOOL_LINK_MODE_FEC_BASER_BIT
= 51,
90 /* Last allowed bit for __ETHTOOL_LINK_MODE_LEGACY_MASK is bit
91 * 31. Please do NOT define any SUPPORTED_* or ADVERTISED_*
92 * macro for bits > 31. The only way to use indices > 31 is to
93 * use the new ETHTOOL_GLINKSETTINGS/ETHTOOL_SLINKSETTINGS API.
96 __ETHTOOL_LINK_MODE_LAST
97 = ETHTOOL_LINK_MODE_FEC_BASER_BIT
,
100 #if !HAVE_ETHTOOL_LINK_MODE_25000baseCR_Full_BIT /* linux@3851112e4737cd52aaeda0ce8d084be9ee128106 (4.7) */
101 #define ETHTOOL_LINK_MODE_25000baseCR_Full_BIT 31
102 #define ETHTOOL_LINK_MODE_25000baseKR_Full_BIT 32
103 #define ETHTOOL_LINK_MODE_25000baseSR_Full_BIT 33
104 #define ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT 34
105 #define ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT 35
106 #define ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT 36
107 #define ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT 37
108 #define ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT 38
109 #define ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT 39
111 #if !HAVE_ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT /* linux@89da45b8b5b2187734a11038b8593714f964ffd1 (4.8) */
112 #define ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT 40
114 #if !HAVE_ETHTOOL_LINK_MODE_1000baseX_Full_BIT /* linux@5711a98221443aec54c4c81ee98c6ae46acccb65 (4.9) */
115 #define ETHTOOL_LINK_MODE_1000baseX_Full_BIT 41
116 #define ETHTOOL_LINK_MODE_10000baseCR_Full_BIT 42
117 #define ETHTOOL_LINK_MODE_10000baseSR_Full_BIT 43
118 #define ETHTOOL_LINK_MODE_10000baseLR_Full_BIT 44
119 #define ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT 45
120 #define ETHTOOL_LINK_MODE_10000baseER_Full_BIT 46
122 #if !HAVE_ETHTOOL_LINK_MODE_2500baseT_Full_BIT /* linux@94842b4fc4d6b1691cfc86c6f5251f299d27f4ba (4.10) */
123 #define ETHTOOL_LINK_MODE_2500baseT_Full_BIT 47
124 #define ETHTOOL_LINK_MODE_5000baseT_Full_BIT 48
126 #if !HAVE_ETHTOOL_LINK_MODE_FEC_NONE_BIT /* linux@1a5f3da20bd966220931239fbd31e6ac6ff42251 (4.14) */
127 #define ETHTOOL_LINK_MODE_FEC_NONE_BIT 49
128 #define ETHTOOL_LINK_MODE_FEC_RS_BIT 50
129 #define ETHTOOL_LINK_MODE_FEC_BASER_BIT 51