Skip to content

Commit 3c6b59d

Browse files
lunndavem330
authored andcommitted
net: phy: Add more link modes to the settings table
Now that PHYs and MAC can support more than 32 bit masks, add link modes which are > 31 to the PHY settings table. Signed-off-by: Andrew Lunn <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent fe19191 commit 3c6b59d

File tree

1 file changed

+158
-4
lines changed

1 file changed

+158
-4
lines changed

drivers/net/phy/phy-core.c

Lines changed: 158 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,124 @@ EXPORT_SYMBOL_GPL(phy_duplex_to_str);
6262
* must be grouped by speed and sorted in descending match priority
6363
* - iow, descending speed. */
6464
static const struct phy_setting settings[] = {
65+
/* 100G */
66+
{
67+
.speed = SPEED_100000,
68+
.duplex = DUPLEX_FULL,
69+
.bit = ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT,
70+
},
71+
{
72+
.speed = SPEED_100000,
73+
.duplex = DUPLEX_FULL,
74+
.bit = ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT,
75+
},
76+
{
77+
.speed = SPEED_100000,
78+
.duplex = DUPLEX_FULL,
79+
.bit = ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT,
80+
},
81+
{
82+
.speed = SPEED_100000,
83+
.duplex = DUPLEX_FULL,
84+
.bit = ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT,
85+
},
86+
/* 56G */
87+
{
88+
.speed = SPEED_56000,
89+
.duplex = DUPLEX_FULL,
90+
.bit = ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT,
91+
},
92+
{
93+
.speed = SPEED_56000,
94+
.duplex = DUPLEX_FULL,
95+
.bit = ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT,
96+
},
97+
{
98+
.speed = SPEED_56000,
99+
.duplex = DUPLEX_FULL,
100+
.bit = ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT,
101+
},
102+
{
103+
.speed = SPEED_56000,
104+
.duplex = DUPLEX_FULL,
105+
.bit = ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT,
106+
},
107+
/* 50G */
108+
{
109+
.speed = SPEED_50000,
110+
.duplex = DUPLEX_FULL,
111+
.bit = ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT,
112+
},
113+
{
114+
.speed = SPEED_50000,
115+
.duplex = DUPLEX_FULL,
116+
.bit = ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT,
117+
},
118+
{
119+
.speed = SPEED_50000,
120+
.duplex = DUPLEX_FULL,
121+
.bit = ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT,
122+
},
123+
/* 40G */
124+
{
125+
.speed = SPEED_40000,
126+
.duplex = DUPLEX_FULL,
127+
.bit = ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT,
128+
},
129+
{
130+
.speed = SPEED_40000,
131+
.duplex = DUPLEX_FULL,
132+
.bit = ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT,
133+
},
134+
{
135+
.speed = SPEED_40000,
136+
.duplex = DUPLEX_FULL,
137+
.bit = ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT,
138+
},
139+
{
140+
.speed = SPEED_40000,
141+
.duplex = DUPLEX_FULL,
142+
.bit = ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT,
143+
},
144+
/* 25G */
145+
{
146+
.speed = SPEED_25000,
147+
.duplex = DUPLEX_FULL,
148+
.bit = ETHTOOL_LINK_MODE_25000baseCR_Full_BIT,
149+
},
150+
{
151+
.speed = SPEED_25000,
152+
.duplex = DUPLEX_FULL,
153+
.bit = ETHTOOL_LINK_MODE_25000baseKR_Full_BIT,
154+
},
155+
{
156+
.speed = SPEED_25000,
157+
.duplex = DUPLEX_FULL,
158+
.bit = ETHTOOL_LINK_MODE_25000baseSR_Full_BIT,
159+
},
160+
161+
/* 20G */
162+
{
163+
.speed = SPEED_20000,
164+
.duplex = DUPLEX_FULL,
165+
.bit = ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT,
166+
},
167+
{
168+
.speed = SPEED_20000,
169+
.duplex = DUPLEX_FULL,
170+
.bit = ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT,
171+
},
172+
/* 10G */
173+
{
174+
.speed = SPEED_10000,
175+
.duplex = DUPLEX_FULL,
176+
.bit = ETHTOOL_LINK_MODE_10000baseCR_Full_BIT,
177+
},
178+
{
179+
.speed = SPEED_10000,
180+
.duplex = DUPLEX_FULL,
181+
.bit = ETHTOOL_LINK_MODE_10000baseER_Full_BIT,
182+
},
65183
{
66184
.speed = SPEED_10000,
67185
.duplex = DUPLEX_FULL,
@@ -72,25 +190,54 @@ static const struct phy_setting settings[] = {
72190
.duplex = DUPLEX_FULL,
73191
.bit = ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT,
74192
},
193+
{
194+
.speed = SPEED_10000,
195+
.duplex = DUPLEX_FULL,
196+
.bit = ETHTOOL_LINK_MODE_10000baseLR_Full_BIT,
197+
},
198+
{
199+
.speed = SPEED_10000,
200+
.duplex = DUPLEX_FULL,
201+
.bit = ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT,
202+
},
203+
{
204+
.speed = SPEED_10000,
205+
.duplex = DUPLEX_FULL,
206+
.bit = ETHTOOL_LINK_MODE_10000baseR_FEC_BIT,
207+
},
208+
{
209+
.speed = SPEED_10000,
210+
.duplex = DUPLEX_FULL,
211+
.bit = ETHTOOL_LINK_MODE_10000baseSR_Full_BIT,
212+
},
75213
{
76214
.speed = SPEED_10000,
77215
.duplex = DUPLEX_FULL,
78216
.bit = ETHTOOL_LINK_MODE_10000baseT_Full_BIT,
79217
},
218+
/* 5G */
219+
{
220+
.speed = SPEED_5000,
221+
.duplex = DUPLEX_FULL,
222+
.bit = ETHTOOL_LINK_MODE_5000baseT_Full_BIT,
223+
},
224+
225+
/* 2.5G */
80226
{
81227
.speed = SPEED_2500,
82228
.duplex = DUPLEX_FULL,
83-
.bit = ETHTOOL_LINK_MODE_2500baseX_Full_BIT,
229+
.bit = ETHTOOL_LINK_MODE_2500baseT_Full_BIT,
84230
},
85231
{
86-
.speed = SPEED_1000,
232+
.speed = SPEED_2500,
87233
.duplex = DUPLEX_FULL,
88-
.bit = ETHTOOL_LINK_MODE_1000baseKX_Full_BIT,
234+
.bit = ETHTOOL_LINK_MODE_2500baseX_Full_BIT,
89235
},
236+
/* 1G */
90237
{
91238
.speed = SPEED_1000,
92239
.duplex = DUPLEX_FULL,
93-
.bit = ETHTOOL_LINK_MODE_1000baseX_Full_BIT,
240+
.bit = ETHTOOL_LINK_MODE_1000baseKX_Full_BIT,
94241
},
95242
{
96243
.speed = SPEED_1000,
@@ -102,6 +249,12 @@ static const struct phy_setting settings[] = {
102249
.duplex = DUPLEX_HALF,
103250
.bit = ETHTOOL_LINK_MODE_1000baseT_Half_BIT,
104251
},
252+
{
253+
.speed = SPEED_1000,
254+
.duplex = DUPLEX_FULL,
255+
.bit = ETHTOOL_LINK_MODE_1000baseX_Full_BIT,
256+
},
257+
/* 100M */
105258
{
106259
.speed = SPEED_100,
107260
.duplex = DUPLEX_FULL,
@@ -112,6 +265,7 @@ static const struct phy_setting settings[] = {
112265
.duplex = DUPLEX_HALF,
113266
.bit = ETHTOOL_LINK_MODE_100baseT_Half_BIT,
114267
},
268+
/* 10M */
115269
{
116270
.speed = SPEED_10,
117271
.duplex = DUPLEX_FULL,

0 commit comments

Comments
 (0)