On 29. 04. 25 8:59 odp., Jakub Kicinski wrote:
On Fri, 25 Apr 2025 19:09:31 +0200 Ivan Vecera wrote:
+static int zl3073x_devlink_info_get(struct devlink *devlink,
+                                   struct devlink_info_req *req,
+                                   struct netlink_ext_ack *extack)
+{
+       struct zl3073x_dev *zldev = devlink_priv(devlink);
+       u16 id, revision, fw_ver;
+       char buf[16];
+       u32 cfg_ver;
+       int rc;
+
+       rc = zl3073x_read_u16(zldev, ZL_REG_ID, &id);
+       if (rc)
+               return rc;
+
+       snprintf(buf, sizeof(buf), "%X", id);
+       rc = devlink_info_version_fixed_put(req,
+                                           
DEVLINK_INFO_VERSION_GENERIC_ASIC_ID,
+                                           buf);
+       if (rc)
+               return rc;
+
+       rc = zl3073x_read_u16(zldev, ZL_REG_REVISION, &revision);
+       if (rc)
+               return rc;
+
+       snprintf(buf, sizeof(buf), "%X", revision);
+       rc = devlink_info_version_fixed_put(req,
+                                           
DEVLINK_INFO_VERSION_GENERIC_ASIC_REV,
+                                           buf);
+       if (rc)
+               return rc;
+
+       rc = zl3073x_read_u16(zldev, ZL_REG_FW_VER, &fw_ver);
+       if (rc)
+               return rc;
+
+       snprintf(buf, sizeof(buf), "%u", fw_ver);
+       rc = devlink_info_version_fixed_put(req,
+                                           DEVLINK_INFO_VERSION_GENERIC_FW,

Are you sure FW version is fixed? Fixed is for unchangeable
properties like ASIC revision or serial numbers.

Hmm, should be running. Thanks for pointing out.

+                                           buf);
+       if (rc)
+               return rc;
+
+       rc = zl3073x_read_u32(zldev, ZL_REG_CUSTOM_CONFIG_VER, &cfg_ver);
+       if (rc)
+               return rc;
+
+       /* No custom config version */
+       if (cfg_ver == U32_MAX)
+               return 0;
+
+       snprintf(buf, sizeof(buf), "%lu.%lu.%lu.%lu",
+                FIELD_GET(GENMASK(31, 24), cfg_ver),
+                FIELD_GET(GENMASK(23, 16), cfg_ver),
+                FIELD_GET(GENMASK(15, 8), cfg_ver),
+                FIELD_GET(GENMASK(7, 0), cfg_ver));
+
+       return devlink_info_version_running_put(req, "cfg.custom_ver", buf);

You need to document the custom versions and properties in a driver
specific file under Documentation/networking/device_drivers/

Will add.

Thanks for the review, Jakub.

Ivan


Reply via email to