Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

net: ethtool: Introduce ETHTOOL_LINK_MEDIUM_* values

In an effort to have a better representation of Ethernet ports,
introduce enumeration values representing the various ethernet Mediums.

This is part of the 802.3 naming convention, for example :

1000 Base T 4
| | | |
| | | \_ pairs (4)
| | \___ Medium (T == Twisted Copper Pairs)
| \_______ Baseband transmission
\____________ Speed

Other example :

10000 Base K X 4
| | \_ lanes (4)
| \___ encoding (BaseX is 8b/10b while BaseR is 66b/64b)
\_____ Medium (K is backplane ethernet)

In the case of representing a physical port, only the medium and number
of pairs should be relevant. One exception would be 1000BaseX, which is
currently also used as a medium in what appears to be any of 1000BaseSX,
1000BaseCX, 1000BaseLX, 1000BaseEX, 1000BaseBX10 and some other.

This was reflected in the mediums associated with the 1000BaseX linkmode.

These mediums are set in the net/ethtool/common.c lookup table that
maintains a list of all linkmodes with their number of pairs, medium,
encoding, speed and duplex.

One notable exception to this is 100BaseT Ethernet. It emcompasses 100BaseTX,
which is a 2-pairs protocol but also 100BaseT4, that will also work on 4-pairs
cables. As we don't make a disctinction between these, the lookup table
contains 2 sets of pair numbers, indicating the min number of pairs for a
protocol to work and the "nominal" number of pairs as well.

Another set of exceptions are linkmodes such 100000baseLR4_ER4, where
the same link mode seems to represent 100GBaseLR4 and 100GBaseER4. The
macro __DEFINE_LINK_MODE_PARAMS_MEDIUMS is here used to populate the
.mediums bitfield with all appropriate mediums.

Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20260108080041.553250-3-maxime.chevallier@bootlin.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Maxime Chevallier and committed by
Jakub Kicinski
3f25ff74 fb7a8d07

+177 -116
+8
drivers/net/phy/phy_caps.c
··· 80 80 /* Fill the caps array from net/ethtool/common.c */ 81 81 for (i = 0; i < __ETHTOOL_LINK_MODE_MASK_NBITS; i++) { 82 82 linkmode = &link_mode_params[i]; 83 + 84 + /* Sanity check the linkmodes array for number of pairs */ 85 + if (linkmode->pairs < linkmode->min_pairs) { 86 + pr_err("Pairs count must not be under min_pairs for linkmode %d\n", 87 + i); 88 + return -EINVAL; 89 + } 90 + 83 91 capa = speed_duplex_to_capa(linkmode->speed, linkmode->duplex); 84 92 85 93 if (capa < 0) {
+22 -3
include/linux/ethtool.h
··· 216 216 void ethtool_rxfh_context_lost(struct net_device *dev, u32 context_id); 217 217 218 218 struct link_mode_info { 219 - int speed; 220 - u8 lanes; 221 - u8 duplex; 219 + int speed; 220 + u8 lanes; 221 + u8 min_pairs; 222 + u8 pairs; 223 + u8 duplex; 224 + u16 mediums; 222 225 }; 223 226 224 227 extern const struct link_mode_info link_mode_params[]; 228 + 229 + enum ethtool_link_medium { 230 + ETHTOOL_LINK_MEDIUM_BASET = 0, 231 + ETHTOOL_LINK_MEDIUM_BASEK, 232 + ETHTOOL_LINK_MEDIUM_BASES, 233 + ETHTOOL_LINK_MEDIUM_BASEC, 234 + ETHTOOL_LINK_MEDIUM_BASEL, 235 + ETHTOOL_LINK_MEDIUM_BASED, 236 + ETHTOOL_LINK_MEDIUM_BASEE, 237 + ETHTOOL_LINK_MEDIUM_BASEF, 238 + ETHTOOL_LINK_MEDIUM_BASEV, 239 + ETHTOOL_LINK_MEDIUM_BASEMLD, 240 + ETHTOOL_LINK_MEDIUM_NONE, 241 + 242 + __ETHTOOL_LINK_MEDIUM_LAST, 243 + }; 225 244 226 245 /* declare a link mode bitmap */ 227 246 #define __ETHTOOL_DECLARE_LINK_MODE_MASK(name) \
+147 -113
net/ethtool/common.c
··· 285 285 #define __LINK_MODE_LANES_DR8_2 8 286 286 #define __LINK_MODE_LANES_T1BRR 1 287 287 288 - #define __DEFINE_LINK_MODE_PARAMS(_speed, _type, _duplex) \ 288 + #define __DEFINE_LINK_MODE_PARAMS_PAIRS(_speed, _type, _min_pairs, _pairs, _duplex, _medium) \ 289 289 [ETHTOOL_LINK_MODE(_speed, _type, _duplex)] = { \ 290 290 .speed = SPEED_ ## _speed, \ 291 291 .lanes = __LINK_MODE_LANES_ ## _type, \ 292 - .duplex = __DUPLEX_ ## _duplex \ 292 + .min_pairs = _min_pairs, \ 293 + .pairs = _pairs, \ 294 + .duplex = __DUPLEX_ ## _duplex, \ 295 + .mediums = BIT(ETHTOOL_LINK_MEDIUM_BASE ## _medium) \ 293 296 } 297 + 298 + #define __DEFINE_LINK_MODE_PARAMS(_speed, _type, _duplex, _medium) \ 299 + [ETHTOOL_LINK_MODE(_speed, _type, _duplex)] = { \ 300 + .speed = SPEED_ ## _speed, \ 301 + .lanes = __LINK_MODE_LANES_ ## _type, \ 302 + .min_pairs = 0, \ 303 + .pairs = 0, \ 304 + .duplex = __DUPLEX_ ## _duplex, \ 305 + .mediums = BIT(ETHTOOL_LINK_MEDIUM_BASE ## _medium) \ 306 + } 307 + #define __DEFINE_LINK_MODE_PARAMS_MEDIUMS(_speed, _type, _duplex, _mediums) \ 308 + [ETHTOOL_LINK_MODE(_speed, _type, _duplex)] = { \ 309 + .speed = SPEED_ ## _speed, \ 310 + .lanes = __LINK_MODE_LANES_ ## _type, \ 311 + .min_pairs = 0, \ 312 + .pairs = 0, \ 313 + .duplex = __DUPLEX_ ## _duplex, \ 314 + .mediums = (_mediums) \ 315 + } 316 + #define __MED(_medium) (BIT(ETHTOOL_LINK_MEDIUM_BASE ## _medium)) 294 317 #define __DUPLEX_Half DUPLEX_HALF 295 318 #define __DUPLEX_Full DUPLEX_FULL 296 319 #define __DEFINE_SPECIAL_MODE_PARAMS(_mode) \ ··· 321 298 .speed = SPEED_UNKNOWN, \ 322 299 .lanes = 0, \ 323 300 .duplex = DUPLEX_UNKNOWN, \ 301 + .mediums = BIT(ETHTOOL_LINK_MEDIUM_NONE), \ 324 302 } 325 303 326 304 const struct link_mode_info link_mode_params[] = { 327 - __DEFINE_LINK_MODE_PARAMS(10, T, Half), 328 - __DEFINE_LINK_MODE_PARAMS(10, T, Full), 329 - __DEFINE_LINK_MODE_PARAMS(100, T, Half), 330 - __DEFINE_LINK_MODE_PARAMS(100, T, Full), 331 - __DEFINE_LINK_MODE_PARAMS(1000, T, Half), 332 - __DEFINE_LINK_MODE_PARAMS(1000, T, Full), 305 + __DEFINE_LINK_MODE_PARAMS_PAIRS(10, T, 2, 4, Half, T), 306 + __DEFINE_LINK_MODE_PARAMS_PAIRS(10, T, 2, 4, Full, T), 307 + __DEFINE_LINK_MODE_PARAMS_PAIRS(100, T, 2, 4, Half, T), 308 + __DEFINE_LINK_MODE_PARAMS_PAIRS(100, T, 2, 4, Full, T), 309 + __DEFINE_LINK_MODE_PARAMS_PAIRS(1000, T, 4, 4, Half, T), 310 + __DEFINE_LINK_MODE_PARAMS_PAIRS(1000, T, 4, 4, Full, T), 333 311 __DEFINE_SPECIAL_MODE_PARAMS(Autoneg), 334 312 __DEFINE_SPECIAL_MODE_PARAMS(TP), 335 313 __DEFINE_SPECIAL_MODE_PARAMS(AUI), 336 314 __DEFINE_SPECIAL_MODE_PARAMS(MII), 337 315 __DEFINE_SPECIAL_MODE_PARAMS(FIBRE), 338 316 __DEFINE_SPECIAL_MODE_PARAMS(BNC), 339 - __DEFINE_LINK_MODE_PARAMS(10000, T, Full), 317 + __DEFINE_LINK_MODE_PARAMS_PAIRS(10000, T, 4, 4, Full, T), 340 318 __DEFINE_SPECIAL_MODE_PARAMS(Pause), 341 319 __DEFINE_SPECIAL_MODE_PARAMS(Asym_Pause), 342 - __DEFINE_LINK_MODE_PARAMS(2500, X, Full), 320 + __DEFINE_LINK_MODE_PARAMS_MEDIUMS(2500, X, Full, 321 + __MED(C) | __MED(S) | __MED(L)), 343 322 __DEFINE_SPECIAL_MODE_PARAMS(Backplane), 344 - __DEFINE_LINK_MODE_PARAMS(1000, KX, Full), 345 - __DEFINE_LINK_MODE_PARAMS(10000, KX4, Full), 346 - __DEFINE_LINK_MODE_PARAMS(10000, KR, Full), 323 + __DEFINE_LINK_MODE_PARAMS(1000, KX, Full, K), 324 + __DEFINE_LINK_MODE_PARAMS(10000, KX4, Full, K), 325 + __DEFINE_LINK_MODE_PARAMS(10000, KR, Full, K), 347 326 [ETHTOOL_LINK_MODE_10000baseR_FEC_BIT] = { 348 327 .speed = SPEED_10000, 349 328 .lanes = 1, 350 329 .duplex = DUPLEX_FULL, 351 330 }, 352 - __DEFINE_LINK_MODE_PARAMS(20000, MLD2, Full), 353 - __DEFINE_LINK_MODE_PARAMS(20000, KR2, Full), 354 - __DEFINE_LINK_MODE_PARAMS(40000, KR4, Full), 355 - __DEFINE_LINK_MODE_PARAMS(40000, CR4, Full), 356 - __DEFINE_LINK_MODE_PARAMS(40000, SR4, Full), 357 - __DEFINE_LINK_MODE_PARAMS(40000, LR4, Full), 358 - __DEFINE_LINK_MODE_PARAMS(56000, KR4, Full), 359 - __DEFINE_LINK_MODE_PARAMS(56000, CR4, Full), 360 - __DEFINE_LINK_MODE_PARAMS(56000, SR4, Full), 361 - __DEFINE_LINK_MODE_PARAMS(56000, LR4, Full), 362 - __DEFINE_LINK_MODE_PARAMS(25000, CR, Full), 363 - __DEFINE_LINK_MODE_PARAMS(25000, KR, Full), 364 - __DEFINE_LINK_MODE_PARAMS(25000, SR, Full), 365 - __DEFINE_LINK_MODE_PARAMS(50000, CR2, Full), 366 - __DEFINE_LINK_MODE_PARAMS(50000, KR2, Full), 367 - __DEFINE_LINK_MODE_PARAMS(100000, KR4, Full), 368 - __DEFINE_LINK_MODE_PARAMS(100000, SR4, Full), 369 - __DEFINE_LINK_MODE_PARAMS(100000, CR4, Full), 370 - __DEFINE_LINK_MODE_PARAMS(100000, LR4_ER4, Full), 371 - __DEFINE_LINK_MODE_PARAMS(50000, SR2, Full), 372 - __DEFINE_LINK_MODE_PARAMS(1000, X, Full), 373 - __DEFINE_LINK_MODE_PARAMS(10000, CR, Full), 374 - __DEFINE_LINK_MODE_PARAMS(10000, SR, Full), 375 - __DEFINE_LINK_MODE_PARAMS(10000, LR, Full), 376 - __DEFINE_LINK_MODE_PARAMS(10000, LRM, Full), 377 - __DEFINE_LINK_MODE_PARAMS(10000, ER, Full), 378 - __DEFINE_LINK_MODE_PARAMS(2500, T, Full), 379 - __DEFINE_LINK_MODE_PARAMS(5000, T, Full), 331 + __DEFINE_LINK_MODE_PARAMS(20000, MLD2, Full, MLD), 332 + __DEFINE_LINK_MODE_PARAMS(20000, KR2, Full, K), 333 + __DEFINE_LINK_MODE_PARAMS(40000, KR4, Full, K), 334 + __DEFINE_LINK_MODE_PARAMS(40000, CR4, Full, C), 335 + __DEFINE_LINK_MODE_PARAMS(40000, SR4, Full, S), 336 + __DEFINE_LINK_MODE_PARAMS(40000, LR4, Full, L), 337 + __DEFINE_LINK_MODE_PARAMS(56000, KR4, Full, K), 338 + __DEFINE_LINK_MODE_PARAMS(56000, CR4, Full, C), 339 + __DEFINE_LINK_MODE_PARAMS(56000, SR4, Full, S), 340 + __DEFINE_LINK_MODE_PARAMS(56000, LR4, Full, L), 341 + __DEFINE_LINK_MODE_PARAMS(25000, CR, Full, C), 342 + __DEFINE_LINK_MODE_PARAMS(25000, KR, Full, K), 343 + __DEFINE_LINK_MODE_PARAMS(25000, SR, Full, S), 344 + __DEFINE_LINK_MODE_PARAMS(50000, CR2, Full, C), 345 + __DEFINE_LINK_MODE_PARAMS(50000, KR2, Full, K), 346 + __DEFINE_LINK_MODE_PARAMS(100000, KR4, Full, K), 347 + __DEFINE_LINK_MODE_PARAMS(100000, SR4, Full, S), 348 + __DEFINE_LINK_MODE_PARAMS(100000, CR4, Full, C), 349 + __DEFINE_LINK_MODE_PARAMS_MEDIUMS(100000, LR4_ER4, Full, 350 + __MED(L) | __MED(E)), 351 + __DEFINE_LINK_MODE_PARAMS(50000, SR2, Full, S), 352 + __DEFINE_LINK_MODE_PARAMS_MEDIUMS(1000, X, Full, 353 + __MED(C) | __MED(S) | __MED(L)), 354 + __DEFINE_LINK_MODE_PARAMS(10000, CR, Full, C), 355 + __DEFINE_LINK_MODE_PARAMS(10000, SR, Full, S), 356 + __DEFINE_LINK_MODE_PARAMS(10000, LR, Full, L), 357 + __DEFINE_LINK_MODE_PARAMS(10000, LRM, Full, L), 358 + __DEFINE_LINK_MODE_PARAMS(10000, ER, Full, E), 359 + __DEFINE_LINK_MODE_PARAMS_PAIRS(2500, T, 4, 4, Full, T), 360 + __DEFINE_LINK_MODE_PARAMS_PAIRS(5000, T, 4, 4, Full, T), 380 361 __DEFINE_SPECIAL_MODE_PARAMS(FEC_NONE), 381 362 __DEFINE_SPECIAL_MODE_PARAMS(FEC_RS), 382 363 __DEFINE_SPECIAL_MODE_PARAMS(FEC_BASER), 383 - __DEFINE_LINK_MODE_PARAMS(50000, KR, Full), 384 - __DEFINE_LINK_MODE_PARAMS(50000, SR, Full), 385 - __DEFINE_LINK_MODE_PARAMS(50000, CR, Full), 386 - __DEFINE_LINK_MODE_PARAMS(50000, LR_ER_FR, Full), 387 - __DEFINE_LINK_MODE_PARAMS(50000, DR, Full), 388 - __DEFINE_LINK_MODE_PARAMS(100000, KR2, Full), 389 - __DEFINE_LINK_MODE_PARAMS(100000, SR2, Full), 390 - __DEFINE_LINK_MODE_PARAMS(100000, CR2, Full), 391 - __DEFINE_LINK_MODE_PARAMS(100000, LR2_ER2_FR2, Full), 392 - __DEFINE_LINK_MODE_PARAMS(100000, DR2, Full), 393 - __DEFINE_LINK_MODE_PARAMS(200000, KR4, Full), 394 - __DEFINE_LINK_MODE_PARAMS(200000, SR4, Full), 395 - __DEFINE_LINK_MODE_PARAMS(200000, LR4_ER4_FR4, Full), 396 - __DEFINE_LINK_MODE_PARAMS(200000, DR4, Full), 397 - __DEFINE_LINK_MODE_PARAMS(200000, CR4, Full), 398 - __DEFINE_LINK_MODE_PARAMS(100, T1, Full), 399 - __DEFINE_LINK_MODE_PARAMS(1000, T1, Full), 400 - __DEFINE_LINK_MODE_PARAMS(400000, KR8, Full), 401 - __DEFINE_LINK_MODE_PARAMS(400000, SR8, Full), 402 - __DEFINE_LINK_MODE_PARAMS(400000, LR8_ER8_FR8, Full), 403 - __DEFINE_LINK_MODE_PARAMS(400000, DR8, Full), 404 - __DEFINE_LINK_MODE_PARAMS(400000, CR8, Full), 364 + __DEFINE_LINK_MODE_PARAMS(50000, KR, Full, K), 365 + __DEFINE_LINK_MODE_PARAMS(50000, SR, Full, S), 366 + __DEFINE_LINK_MODE_PARAMS(50000, CR, Full, C), 367 + __DEFINE_LINK_MODE_PARAMS_MEDIUMS(50000, LR_ER_FR, Full, 368 + __MED(L) | __MED(E) | __MED(F)), 369 + __DEFINE_LINK_MODE_PARAMS(50000, DR, Full, D), 370 + __DEFINE_LINK_MODE_PARAMS(100000, KR2, Full, K), 371 + __DEFINE_LINK_MODE_PARAMS(100000, SR2, Full, S), 372 + __DEFINE_LINK_MODE_PARAMS(100000, CR2, Full, C), 373 + __DEFINE_LINK_MODE_PARAMS_MEDIUMS(100000, LR2_ER2_FR2, Full, 374 + __MED(L) | __MED(E) | __MED(F)), 375 + __DEFINE_LINK_MODE_PARAMS(100000, DR2, Full, D), 376 + __DEFINE_LINK_MODE_PARAMS(200000, KR4, Full, K), 377 + __DEFINE_LINK_MODE_PARAMS(200000, SR4, Full, S), 378 + __DEFINE_LINK_MODE_PARAMS_MEDIUMS(200000, LR4_ER4_FR4, Full, 379 + __MED(L) | __MED(E) | __MED(F)), 380 + __DEFINE_LINK_MODE_PARAMS(200000, DR4, Full, D), 381 + __DEFINE_LINK_MODE_PARAMS(200000, CR4, Full, C), 382 + __DEFINE_LINK_MODE_PARAMS_PAIRS(100, T1, 1, 1, Full, T), 383 + __DEFINE_LINK_MODE_PARAMS_PAIRS(1000, T1, 1, 1, Full, T), 384 + __DEFINE_LINK_MODE_PARAMS(400000, KR8, Full, K), 385 + __DEFINE_LINK_MODE_PARAMS(400000, SR8, Full, S), 386 + __DEFINE_LINK_MODE_PARAMS_MEDIUMS(400000, LR8_ER8_FR8, Full, 387 + __MED(L) | __MED(E) | __MED(F)), 388 + __DEFINE_LINK_MODE_PARAMS(400000, DR8, Full, D), 389 + __DEFINE_LINK_MODE_PARAMS(400000, CR8, Full, C), 405 390 __DEFINE_SPECIAL_MODE_PARAMS(FEC_LLRS), 406 - __DEFINE_LINK_MODE_PARAMS(100000, KR, Full), 407 - __DEFINE_LINK_MODE_PARAMS(100000, SR, Full), 408 - __DEFINE_LINK_MODE_PARAMS(100000, LR_ER_FR, Full), 409 - __DEFINE_LINK_MODE_PARAMS(100000, DR, Full), 410 - __DEFINE_LINK_MODE_PARAMS(100000, CR, Full), 411 - __DEFINE_LINK_MODE_PARAMS(200000, KR2, Full), 412 - __DEFINE_LINK_MODE_PARAMS(200000, SR2, Full), 413 - __DEFINE_LINK_MODE_PARAMS(200000, LR2_ER2_FR2, Full), 414 - __DEFINE_LINK_MODE_PARAMS(200000, DR2, Full), 415 - __DEFINE_LINK_MODE_PARAMS(200000, CR2, Full), 416 - __DEFINE_LINK_MODE_PARAMS(400000, KR4, Full), 417 - __DEFINE_LINK_MODE_PARAMS(400000, SR4, Full), 418 - __DEFINE_LINK_MODE_PARAMS(400000, LR4_ER4_FR4, Full), 419 - __DEFINE_LINK_MODE_PARAMS(400000, DR4, Full), 420 - __DEFINE_LINK_MODE_PARAMS(400000, CR4, Full), 421 - __DEFINE_LINK_MODE_PARAMS(100, FX, Half), 422 - __DEFINE_LINK_MODE_PARAMS(100, FX, Full), 423 - __DEFINE_LINK_MODE_PARAMS(10, T1L, Full), 424 - __DEFINE_LINK_MODE_PARAMS(800000, CR8, Full), 425 - __DEFINE_LINK_MODE_PARAMS(800000, KR8, Full), 426 - __DEFINE_LINK_MODE_PARAMS(800000, DR8, Full), 427 - __DEFINE_LINK_MODE_PARAMS(800000, DR8_2, Full), 428 - __DEFINE_LINK_MODE_PARAMS(800000, SR8, Full), 429 - __DEFINE_LINK_MODE_PARAMS(800000, VR8, Full), 430 - __DEFINE_LINK_MODE_PARAMS(10, T1S, Full), 431 - __DEFINE_LINK_MODE_PARAMS(10, T1S, Half), 432 - __DEFINE_LINK_MODE_PARAMS(10, T1S_P2MP, Half), 433 - __DEFINE_LINK_MODE_PARAMS(10, T1BRR, Full), 434 - __DEFINE_LINK_MODE_PARAMS(200000, CR, Full), 435 - __DEFINE_LINK_MODE_PARAMS(200000, KR, Full), 436 - __DEFINE_LINK_MODE_PARAMS(200000, DR, Full), 437 - __DEFINE_LINK_MODE_PARAMS(200000, DR_2, Full), 438 - __DEFINE_LINK_MODE_PARAMS(200000, SR, Full), 439 - __DEFINE_LINK_MODE_PARAMS(200000, VR, Full), 440 - __DEFINE_LINK_MODE_PARAMS(400000, CR2, Full), 441 - __DEFINE_LINK_MODE_PARAMS(400000, KR2, Full), 442 - __DEFINE_LINK_MODE_PARAMS(400000, DR2, Full), 443 - __DEFINE_LINK_MODE_PARAMS(400000, DR2_2, Full), 444 - __DEFINE_LINK_MODE_PARAMS(400000, SR2, Full), 445 - __DEFINE_LINK_MODE_PARAMS(400000, VR2, Full), 446 - __DEFINE_LINK_MODE_PARAMS(800000, CR4, Full), 447 - __DEFINE_LINK_MODE_PARAMS(800000, KR4, Full), 448 - __DEFINE_LINK_MODE_PARAMS(800000, DR4, Full), 449 - __DEFINE_LINK_MODE_PARAMS(800000, DR4_2, Full), 450 - __DEFINE_LINK_MODE_PARAMS(800000, SR4, Full), 451 - __DEFINE_LINK_MODE_PARAMS(800000, VR4, Full), 452 - __DEFINE_LINK_MODE_PARAMS(1600000, CR8, Full), 453 - __DEFINE_LINK_MODE_PARAMS(1600000, KR8, Full), 454 - __DEFINE_LINK_MODE_PARAMS(1600000, DR8, Full), 455 - __DEFINE_LINK_MODE_PARAMS(1600000, DR8_2, Full), 391 + __DEFINE_LINK_MODE_PARAMS(100000, KR, Full, K), 392 + __DEFINE_LINK_MODE_PARAMS(100000, SR, Full, S), 393 + __DEFINE_LINK_MODE_PARAMS_MEDIUMS(100000, LR_ER_FR, Full, 394 + __MED(L) | __MED(E) | __MED(F)), 395 + __DEFINE_LINK_MODE_PARAMS(100000, DR, Full, D), 396 + __DEFINE_LINK_MODE_PARAMS(100000, CR, Full, C), 397 + __DEFINE_LINK_MODE_PARAMS(200000, KR2, Full, K), 398 + __DEFINE_LINK_MODE_PARAMS(200000, SR2, Full, S), 399 + __DEFINE_LINK_MODE_PARAMS_MEDIUMS(200000, LR2_ER2_FR2, Full, 400 + __MED(L) | __MED(E) | __MED(F)), 401 + __DEFINE_LINK_MODE_PARAMS(200000, DR2, Full, D), 402 + __DEFINE_LINK_MODE_PARAMS(200000, CR2, Full, C), 403 + __DEFINE_LINK_MODE_PARAMS(400000, KR4, Full, K), 404 + __DEFINE_LINK_MODE_PARAMS(400000, SR4, Full, S), 405 + __DEFINE_LINK_MODE_PARAMS_MEDIUMS(400000, LR4_ER4_FR4, Full, 406 + __MED(L) | __MED(E) | __MED(F)), 407 + __DEFINE_LINK_MODE_PARAMS(400000, DR4, Full, D), 408 + __DEFINE_LINK_MODE_PARAMS(400000, CR4, Full, C), 409 + __DEFINE_LINK_MODE_PARAMS(100, FX, Half, F), 410 + __DEFINE_LINK_MODE_PARAMS(100, FX, Full, F), 411 + __DEFINE_LINK_MODE_PARAMS_PAIRS(10, T1L, 1, 1, Full, T), 412 + __DEFINE_LINK_MODE_PARAMS(800000, CR8, Full, C), 413 + __DEFINE_LINK_MODE_PARAMS(800000, KR8, Full, K), 414 + __DEFINE_LINK_MODE_PARAMS(800000, DR8, Full, D), 415 + __DEFINE_LINK_MODE_PARAMS(800000, DR8_2, Full, D), 416 + __DEFINE_LINK_MODE_PARAMS(800000, SR8, Full, S), 417 + __DEFINE_LINK_MODE_PARAMS(800000, VR8, Full, V), 418 + __DEFINE_LINK_MODE_PARAMS_PAIRS(10, T1S, 1, 1, Full, T), 419 + __DEFINE_LINK_MODE_PARAMS_PAIRS(10, T1S, 1, 1, Half, T), 420 + __DEFINE_LINK_MODE_PARAMS_PAIRS(10, T1S_P2MP, 1, 1, Half, T), 421 + __DEFINE_LINK_MODE_PARAMS_PAIRS(10, T1BRR, 1, 1, Full, T), 422 + __DEFINE_LINK_MODE_PARAMS(200000, CR, Full, C), 423 + __DEFINE_LINK_MODE_PARAMS(200000, KR, Full, K), 424 + __DEFINE_LINK_MODE_PARAMS(200000, DR, Full, D), 425 + __DEFINE_LINK_MODE_PARAMS(200000, DR_2, Full, D), 426 + __DEFINE_LINK_MODE_PARAMS(200000, SR, Full, S), 427 + __DEFINE_LINK_MODE_PARAMS(200000, VR, Full, V), 428 + __DEFINE_LINK_MODE_PARAMS(400000, CR2, Full, C), 429 + __DEFINE_LINK_MODE_PARAMS(400000, KR2, Full, K), 430 + __DEFINE_LINK_MODE_PARAMS(400000, DR2, Full, D), 431 + __DEFINE_LINK_MODE_PARAMS(400000, DR2_2, Full, D), 432 + __DEFINE_LINK_MODE_PARAMS(400000, SR2, Full, S), 433 + __DEFINE_LINK_MODE_PARAMS(400000, VR2, Full, V), 434 + __DEFINE_LINK_MODE_PARAMS(800000, CR4, Full, C), 435 + __DEFINE_LINK_MODE_PARAMS(800000, KR4, Full, K), 436 + __DEFINE_LINK_MODE_PARAMS(800000, DR4, Full, D), 437 + __DEFINE_LINK_MODE_PARAMS(800000, DR4_2, Full, D), 438 + __DEFINE_LINK_MODE_PARAMS(800000, SR4, Full, S), 439 + __DEFINE_LINK_MODE_PARAMS(800000, VR4, Full, V), 440 + __DEFINE_LINK_MODE_PARAMS(1600000, CR8, Full, C), 441 + __DEFINE_LINK_MODE_PARAMS(1600000, KR8, Full, K), 442 + __DEFINE_LINK_MODE_PARAMS(1600000, DR8, Full, D), 443 + __DEFINE_LINK_MODE_PARAMS(1600000, DR8_2, Full, D), 456 444 }; 457 445 static_assert(ARRAY_SIZE(link_mode_params) == __ETHTOOL_LINK_MODE_MASK_NBITS); 458 446 EXPORT_SYMBOL_GPL(link_mode_params);