]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/shared/ethtool-link-mode.py
2 # SPDX-License-Identifier: LGPL-2.1-or-later
10 'autoneg' : 'autonegotiation',
13 mode
, cpp
, header
= sys
.argv
[1:]
16 command
= [*shlex
.split(cpp
), '-include', header
, '-']
17 out
= subprocess
.check_output(command
, stdin
=subprocess
.DEVNULL
, universal_newlines
=True)
19 lines
= iter(out
.splitlines())
21 if line
.startswith('enum ethtool_link_mode_bit_indices {'):
26 if line
.startswith('}'):
28 # ETHTOOL_LINK_MODE_10baseT_Half_BIT = 0,
29 m
= re
.match(r
'^\s*(ETHTOOL_LINK_MODE_((\d*).*)_BIT)\s*=\s*(\d+),', line
)
32 enum
, name
, speed
, value
= m
.groups()
34 name
= name
.lower().replace('_', '-')
35 name
= OVERRIDES
.get(name
, name
)
37 duplex
= name
.split('-')[-1].lower()
38 if duplex
not in {'half', 'full'}:
41 entries
+= [(enum
, name
, speed
, value
, duplex
)]
46 entries
.sort(key
=lambda entry
: (int(entry
[2]) if entry
[2] else 1e20
, entry
[4], entry
[1], entry
[3]))
48 for enum
, name
, speed
, value
, duplex
in entries
:
51 <row><entry><option>{name}</option></entry>
52 <entry>{speed}</entry><entry>{duplex}</entry></row>
56 print(f
' {enum:50} = "{name}",')
61 assert len(entries
) >= 99