* [PATCH what v2 0/2] ice: implement support for 0x0601 opcode
@ 2026-01-19 16:16 Dawid Osuchowski
2026-01-19 16:16 ` [PATCH what v2 1/2] ice: extract extended_phy_capabilities into a separate file Dawid Osuchowski
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Dawid Osuchowski @ 2026-01-19 16:16 UTC (permalink / raw)
To: patches; +Cc: Dawid Osuchowski
Extracted extended_phy_capabilities into separate file and implemented
0x0601 opcode parsing.
Dawid Osuchowski (2):
ice: extract extended_phy_capabilities into a separate file
ice: implement support for 0x0601 opcode
samples/linux.log | 12 +++
what/ice/extended_phy_capabilities.lua | 104 ++++++++++++++++++++
what/ice/opcodes/0x0601.lua | 131 +++++++++++++++++++++++++
what/ice/opcodes/0x0607.lua | 107 +-------------------
4 files changed, 248 insertions(+), 106 deletions(-)
create mode 100644 what/ice/extended_phy_capabilities.lua
create mode 100644 what/ice/opcodes/0x0601.lua
--
2.52.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH what v2 1/2] ice: extract extended_phy_capabilities into a separate file
2026-01-19 16:16 [PATCH what v2 0/2] ice: implement support for 0x0601 opcode Dawid Osuchowski
@ 2026-01-19 16:16 ` Dawid Osuchowski
2026-01-19 16:16 ` [PATCH what v2 2/2] ice: implement support for 0x0601 opcode Dawid Osuchowski
2026-01-19 17:08 ` [PATCH what v2 0/2] " Aki
2 siblings, 0 replies; 4+ messages in thread
From: Dawid Osuchowski @ 2026-01-19 16:16 UTC (permalink / raw)
To: patches; +Cc: Dawid Osuchowski
Allows to include them in other opcodes without code duplication.
Signed-off-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com>
---
v2:
- everything, as this didn't exist in v1
what/ice/extended_phy_capabilities.lua | 104 ++++++++++++++++++++++++
what/ice/opcodes/0x0607.lua | 107 +------------------------
2 files changed, 105 insertions(+), 106 deletions(-)
create mode 100644 what/ice/extended_phy_capabilities.lua
diff --git a/what/ice/extended_phy_capabilities.lua b/what/ice/extended_phy_capabilities.lua
new file mode 100644
index 000000000000..52d9d7d5af5a
--- /dev/null
+++ b/what/ice/extended_phy_capabilities.lua
@@ -0,0 +1,104 @@
+--- 3.3.3.2.1 Extended PHY Capabilities 128-Bit Word Structure[E810]
+--- Table 3-90. 128-Bit Word Extended PHY Capabilities[E810]
+return {
+ -- Word[0]:
+ "100BASE-TX",
+ "100M-SGMII",
+ "1000BASE-T",
+ "1000BASE-SX",
+ "1000BASE-LX",
+ "1000BASE-KX",
+ "1G-SGMII",
+ nil, -- Reserved
+ nil,
+ nil,
+ "5GBASE-T",
+ "5GBASE-KR",
+ nil,
+ "10G-SFI-DA",
+ "10GBASE-SR",
+ "10GBASE-LR",
+ "10GBASE-KR",
+ "10G-SFI-AOC/ACC",
+ "10G-SFI-C2C",
+ nil,
+ "25GBASE-CR",
+ "25GBASE-CR-S",
+ "25GBASE-CR1",
+ "25GBASE-SR",
+ "25GBASE-LR",
+ "25GBASE-KR",
+ "25GBASE-KR-S",
+ "25GBASE-KR1",
+ "25G-AUI-AOC/ACC",
+ "25G-AUI-C2C",
+ nil,
+ nil,
+ -- Word[1]:
+ nil,
+ nil,
+ nil,
+ nil,
+ "50GBASE-CR2",
+ "50G-LAUI2-AOC/ACC w/CL133 PCS",
+ "50G-LAUI2 w/CL133 PCS",
+ "50GBASE-KR2",
+ "50G-LAUI2-AOC/ACC",
+ "50G-LAUI2",
+ "50G-AUI2-AOC/ACC",
+ "50G-AUI2",
+ "50GBASE-CP",
+ "50GBASE-SR",
+ "50GBASE-FR",
+ "50GBASE-LR",
+ "50GBASE-KR-PAM4",
+ "50G-AUI1-AOC/ACC",
+ "50G-AUI1",
+ "100GBASE-CR4",
+ "100GBASE-SR4",
+ "100GBASE-LR4",
+ "100GBASE-KR4",
+ "100G-CAUI4-AOC/ACC",
+ "100G-CAUI4",
+ "100G-AUI4-AOC/ACC",
+ "100G-AUI4",
+ "100GBASE-DR [CAUI4]",
+ "100GBASE-KR4-PAM4",
+ "100GBASE-CR2",
+ "100GBASE-SR2",
+ "100GBASE-DR [AUI2]",
+ -- Word[2]:
+ "100GBASE-KR2-PAM4",
+ nil,
+ nil,
+ "100G-AUI2-AOC/ACC",
+ "100G-AUI2",
+ "100GBASE-CR1",
+ "100GBASE-KR1",
+ "100GBASE-SR1[30m]",
+ "100GBASE-SR1[100m]",
+ "100GBASE-LR",
+ "100GBASE-FR",
+ "100GBASE-DR [AUI1]",
+ "100GBASE-AUI1-AOC/ACC",
+ "100G-AUI1-C2C",
+ "200G-AUI8-AOC/ACC",
+ "200G-AUI8",
+ "200GBASE-CR4-PAM4",
+ "200GBASE-SR4",
+ "200GBASE-FR4",
+ "200GBASE-LR4",
+ "200GBASE-DR4",
+ "200GBASE-KR4-PAM4",
+ "200G-AUI4-AOC/ACC",
+ "200G-AUI4",
+ "200G-CR2",
+ "200GBASE-KR2",
+ "200GBASE-SR2[30m]",
+ "200GBASE-SR2[100m]",
+ "200GBASE-DR2",
+ "200GBASE-AUI2-AOC/ACC",
+ "200G-AUI2-C2C",
+ nil,
+ -- Word[3]: every bit is Reserved
+}
diff --git a/what/ice/opcodes/0x0607.lua b/what/ice/opcodes/0x0607.lua
index 374326a3472a..4848258f7ba1 100644
--- a/what/ice/opcodes/0x0607.lua
+++ b/what/ice/opcodes/0x0607.lua
@@ -1,6 +1,7 @@
local dis = require "what.dissecting"
local bits = require "what.bits"
local flags = require "what.ice.flags"
+local extended_phy_capabilities = require "what.ice.extended_phy_capabilities"
local bit = bits.bit
local get_link_status = {}
local dump = [[
@@ -49,112 +50,6 @@ function get_link_status:dump_command_flags ()
end
---- 3.3.3.2.1 Extended PHY Capabilities 128-Bit Word Structure[E810]
---- Table 3-90. 128-Bit Word Extended PHY Capabilities[E810]
-local extended_phy_capabilities = {
- -- Word[0]:
- "100BASE-TX",
- "100M-SGMII",
- "1000BASE-T",
- "1000BASE-SX",
- "1000BASE-LX",
- "1000BASE-KX",
- "1G-SGMII",
- nil, -- Reserved
- nil,
- nil,
- "5GBASE-T",
- "5GBASE-KR",
- nil,
- "10G-SFI-DA",
- "10GBASE-SR",
- "10GBASE-LR",
- "10GBASE-KR",
- "10G-SFI-AOC/ACC",
- "10G-SFI-C2C",
- nil,
- "25GBASE-CR",
- "25GBASE-CR-S",
- "25GBASE-CR1",
- "25GBASE-SR",
- "25GBASE-LR",
- "25GBASE-KR",
- "25GBASE-KR-S",
- "25GBASE-KR1",
- "25G-AUI-AOC/ACC",
- "25G-AUI-C2C",
- nil,
- nil,
- -- Word[1]:
- nil,
- nil,
- nil,
- nil,
- "50GBASE-CR2",
- "50G-LAUI2-AOC/ACC w/CL133 PCS",
- "50G-LAUI2 w/CL133 PCS",
- "50GBASE-KR2",
- "50G-LAUI2-AOC/ACC",
- "50G-LAUI2",
- "50G-AUI2-AOC/ACC",
- "50G-AUI2",
- "50GBASE-CP",
- "50GBASE-SR",
- "50GBASE-FR",
- "50GBASE-LR",
- "50GBASE-KR-PAM4",
- "50G-AUI1-AOC/ACC",
- "50G-AUI1",
- "100GBASE-CR4",
- "100GBASE-SR4",
- "100GBASE-LR4",
- "100GBASE-KR4",
- "100G-CAUI4-AOC/ACC",
- "100G-CAUI4",
- "100G-AUI4-AOC/ACC",
- "100G-AUI4",
- "100GBASE-DR [CAUI4]",
- "100GBASE-KR4-PAM4",
- "100GBASE-CR2",
- "100GBASE-SR2",
- "100GBASE-DR [AUI2]",
- -- Word[2]:
- "100GBASE-KR2-PAM4",
- nil,
- nil,
- "100G-AUI2-AOC/ACC",
- "100G-AUI2",
- "100GBASE-CR1",
- "100GBASE-KR1",
- "100GBASE-SR1[30m]",
- "100GBASE-SR1[100m]",
- "100GBASE-LR",
- "100GBASE-FR",
- "100GBASE-DR [AUI1]",
- "100GBASE-AUI1-AOC/ACC",
- "100G-AUI1-C2C",
- "200G-AUI8-AOC/ACC",
- "200G-AUI8",
- "200GBASE-CR4-PAM4",
- "200GBASE-SR4",
- "200GBASE-FR4",
- "200GBASE-LR4",
- "200GBASE-DR4",
- "200GBASE-KR4-PAM4",
- "200G-AUI4-AOC/ACC",
- "200G-AUI4",
- "200G-CR2",
- "200GBASE-KR2",
- "200GBASE-SR2[30m]",
- "200GBASE-SR2[100m]",
- "200GBASE-DR2",
- "200GBASE-AUI2-AOC/ACC",
- "200G-AUI2-C2C",
- nil,
- -- Word[3]: every bit is Reserved
-}
-
-
local
function bit_toggle (entries, count, offset)
offset = offset or 0
--
2.52.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH what v2 2/2] ice: implement support for 0x0601 opcode
2026-01-19 16:16 [PATCH what v2 0/2] ice: implement support for 0x0601 opcode Dawid Osuchowski
2026-01-19 16:16 ` [PATCH what v2 1/2] ice: extract extended_phy_capabilities into a separate file Dawid Osuchowski
@ 2026-01-19 16:16 ` Dawid Osuchowski
2026-01-19 17:08 ` [PATCH what v2 0/2] " Aki
2 siblings, 0 replies; 4+ messages in thread
From: Dawid Osuchowski @ 2026-01-19 16:16 UTC (permalink / raw)
To: patches; +Cc: Dawid Osuchowski
Signed-off-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com>
---
v2:
- extract extended_phy_capabilities into separate file and include it in opcode
- appended sample to samples/linux.log
- removed unused bit declaration
samples/linux.log | 12 ++++
what/ice/opcodes/0x0601.lua | 131 ++++++++++++++++++++++++++++++++++++
2 files changed, 143 insertions(+)
create mode 100644 what/ice/opcodes/0x0601.lua
diff --git a/samples/linux.log b/samples/linux.log
index ce1c0a9df1e1..a32fcd06bf75 100644
--- a/samples/linux.log
+++ b/samples/linux.log
@@ -14,3 +14,15 @@
[ 5.000000] ice 0x00000008 0x0000C000 00000000: 00 10 e1 e0 00 00 00 26 00 00 20 00 00 00 00 00
[ 5.000000] ice 0x00000008 0x0000C000 00000010: 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 5.000000] example: this line is something completely unrelated
+[ 5.000000] ice 0000:01:00.0: AQ Command: opcode 0x0601, flags 0x3400, datalen 0x0018, retval 0x0000
+ cookie (h,l) 0x00000000 0x00000000
+ param (0,1) 0x00000000 0x00000000
+ addr (h,l) 0x00000004 0x3CB75000
+[ 5.000000] ice 0x00000004 0x3CB75000 00000000: 00 40 80 00 00 00 00 00 00 00 00 00 00 00 00 00
+[ 5.000000] ice 0x00000004 0x3CB75000 00000010: e0 00 00 00 00 00 04 00
+[ 5.000000] ice 0000:01:00.0: AQ Response: opcode 0x0601, flags 0x3403, datalen 0x0018, retval 0x0000
+ cookie (h,l) 0x00000000 0x00000000
+ param (0,1) 0x00000000 0x00000000
+ addr (h,l) 0x00000004 0x3CB75000
+[ 5.000000] ice 0x00000004 0x3CB75000 00000000: 00 40 80 00 00 00 00 00 00 00 00 00 00 00 00 00
+[ 5.000000] ice 0x00000004 0x3CB75000 00000010: e0 00 00 00 00 00 04 00
diff --git a/what/ice/opcodes/0x0601.lua b/what/ice/opcodes/0x0601.lua
new file mode 100644
index 000000000000..487be10cbcb6
--- /dev/null
+++ b/what/ice/opcodes/0x0601.lua
@@ -0,0 +1,131 @@
+local dis = require "what.dissecting"
+local bits = require "what.bits"
+local flags = require "what.ice.flags"
+local extended_phy_capabilities = require "what.ice.extended_phy_capabilities"
+local set_phy_config = {}
+local dump = [[
+---
+opcode: 0x0601 (Set PHY Config)
+kind: %s %s
+flags: %s
+retval: 0x%x
+cookie: 0x%08x 0x%08x
+%s...]]
+
+
+function set_phy_config:dump ()
+ return dump:format(
+ self.queue, self.kind,
+ flags.dump(self.flags),
+ self.retval,
+ self.cookie_h, self.cookie_l,
+ self:dump_indirect_buffer())
+end
+
+local
+function bit_list (entries, count, offset)
+ offset = offset or 0
+ local list = {}
+ for i=1,count do
+ list[i] = entries[offset + i]
+ end
+ return bits.list(list)
+end
+
+
+--- Table 3-28. Set PHY Config Command Data Structure[E810]
+local indirect_buffer = dis.new {
+ -- TODO: Consider handling >8 bytes in one range definition.
+ -- TODO: Consider supporting default value if lookup fails
+ ["0.0-3.7"] = dis.insert_if_empty("PHY Type", bit_list(extended_phy_capabilities, 32)),
+ ["4.0-7.7"] = dis.insert_if_empty("PHY Type", bit_list(extended_phy_capabilities, 32, 32)),
+ ["8.0-11.7"] = dis.insert_if_empty("PHY Type", bit_list(extended_phy_capabilities, 32, 64)),
+ ["12.0-15.7"] = dis.insert_if_empty("PHY Type", bit_list(extended_phy_capabilities, 32, 96)),
+ ["16.0-16.1"] = dis.list "Pause Ability" {
+ "Enable Tx Link Pause",
+ "Enable Rx Link Pause",
+ neither = "Tx and Rx Disabled",
+ },
+ ["16.2"] = dis.toggle "Power Mode" {
+ [0] = "High Power Mode",
+ [1] = "Low Power Mode",
+ },
+ ["16.3"] = dis.yes_no "Enable Link",
+ ["16.5"] = dis.yes_no "Enable Automatic Link Update",
+ ["16.6"] = dis.yes_no "LESM Enable",
+ ["16.7"] = dis.yes_no "Auto FEC Enable",
+ ["17.0-17.3"] = dis.list "Low Power Control" {
+ "Enable D3cold low power auto-negotiation",
+ nil, -- Reserved
+ nil, -- Reserved
+ "AN37 enabled on 1G links",
+ neither = "D3cold and AN37 disabled",
+ },
+ ["18.0-19.2"] = dis.list "EEE Capability Enable" {
+ "100BASE-TX",
+ "1000BASE-T",
+ "10GBASE-T",
+ "1000BASE-KX",
+ "10GBASE-KR",
+ "25GBASE-KR",
+ "50GBASE-KR2",
+ "50GBASE-KR-PAM4",
+ "100GBASE-KR4",
+ "100GBASE-KR2-PAM4",
+ neither = "Disabled",
+ },
+ ["20.0-21.7"] = dis.hexadecimal "EEER Value",
+ ["22.0-22.7"] = dis.list "Link FEC Options" {
+ "FIRE_CODE_10_ABILITY Enable",
+ "FIRE_CODE_10_REQUEST",
+ "RS_528_REQUEST",
+ "FIRE_CODE_25_REQUEST",
+ "RS_544_REQUEST",
+ "No FEC",
+ "RS_528_ABILITY",
+ "FIRE_CODE_25_ABILITY",
+ neither = "None",
+ },
+ ["23.0"] = dis.toggle "Module Compliance Enforcement" {
+ [0] = "Lenient",
+ [1] = "Strict",
+ },
+}
+local order = {
+ "PHY Type",
+ "Pause Ability",
+ "Power Mode",
+ "Enable Link",
+ "Enable Automatic Link Update",
+ "LESM Enable",
+ "Auto FEC Enable",
+ "Low Power Control",
+ "EEE Capability Enable",
+ "EEER Value",
+ "Link FEC Options",
+ "Module Compliance Enforcement",
+}
+
+
+function set_phy_config:dump_indirect_buffer ()
+ local str = ""
+ local result = indirect_buffer({}, self.buffer)
+ for _, key in ipairs(order) do
+ local value = result[key]
+ if value then
+ str = str .. key .. ":"
+ if type(value) == "string" then
+ str = string.format("%s %s", str, value)
+ elseif type(value) == "table" then
+ for _, x in ipairs(value) do
+ str = str .. "\n - " .. x
+ end
+ end
+ str = str .. "\n"
+ end
+ end
+ return str
+end
+
+
+return set_phy_config
--
2.52.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH what v2 0/2] ice: implement support for 0x0601 opcode
2026-01-19 16:16 [PATCH what v2 0/2] ice: implement support for 0x0601 opcode Dawid Osuchowski
2026-01-19 16:16 ` [PATCH what v2 1/2] ice: extract extended_phy_capabilities into a separate file Dawid Osuchowski
2026-01-19 16:16 ` [PATCH what v2 2/2] ice: implement support for 0x0601 opcode Dawid Osuchowski
@ 2026-01-19 17:08 ` Aki
2 siblings, 0 replies; 4+ messages in thread
From: Aki @ 2026-01-19 17:08 UTC (permalink / raw)
To: Dawid Osuchowski; +Cc: patches
Looks good, thank you! Merged as:
* https://git.ignore.pl/what/commit/?id=3c367eb54ec00fc4b91a317710edbcab85fc9e59
* https://git.ignore.pl/what/commit/?id=a2f1cb8fd5cda713074b1d97dbafce19de987b26
Added Intel to NOTICE:
* https://git.ignore.pl/what/commit/?id=a9a47415ac1899c7aeb0453360ccdb068b91a66b
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-01-19 17:08 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-01-19 16:16 [PATCH what v2 0/2] ice: implement support for 0x0601 opcode Dawid Osuchowski
2026-01-19 16:16 ` [PATCH what v2 1/2] ice: extract extended_phy_capabilities into a separate file Dawid Osuchowski
2026-01-19 16:16 ` [PATCH what v2 2/2] ice: implement support for 0x0601 opcode Dawid Osuchowski
2026-01-19 17:08 ` [PATCH what v2 0/2] " Aki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox