aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorAndrew Gallatin <gallatin@FreeBSD.org>2026-04-05 19:58:10 +0000
committerAndrew Gallatin <gallatin@FreeBSD.org>2026-04-05 21:04:38 +0000
commitcf1f21572897ffc85789fbb1792603967297f6fc (patch)
treeeb3ca04974e61a7bd7a3d5dfac397c89fb3e442a /sys/dev
parentc84049c0bef5be3a59159e9a9ae88e22caff429b (diff)
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/mlx5/mlx5_en/mlx5_en_main.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
index 0baeab31b100..fb8b79c8f787 100644
--- a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
+++ b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
@@ -3728,6 +3728,8 @@ out:
break;
case SIOCGI2C:
+ /* fallthru */
+ case SIOCGI2CPB:
ifr = (struct ifreq *)data;
/*
@@ -3737,6 +3739,9 @@ out:
error = copyin(ifr_data_get_ptr(ifr), &i2c, sizeof(i2c));
if (error)
break;
+ /* ensure page and bank are 0 for legacy SIOCGI2C ioctls */
+ if (command == SIOCGI2C)
+ i2c.page = i2c.bank = 0;
if (i2c.len > sizeof(i2c.data)) {
error = EINVAL;
@@ -3778,8 +3783,17 @@ out:
error = EINVAL;
goto err_i2c;
}
+
+ if (i2c.bank != 0) {
+ mlx5_en_err(ifp,
+ "Query eeprom failed, Invalid Bank: %X\n",
+ i2c.bank);
+ error = EINVAL;
+ goto err_i2c;
+ }
+
error = mlx5_query_eeprom(priv->mdev,
- read_addr, MLX5_EEPROM_LOW_PAGE,
+ read_addr, i2c.page,
(uint32_t)i2c.offset, (uint32_t)i2c.len, module_num,
(uint32_t *)i2c.data, &size_read);
if (error) {
@@ -3791,7 +3805,7 @@ out:
if (i2c.len > MLX5_EEPROM_MAX_BYTES) {
error = mlx5_query_eeprom(priv->mdev,
- read_addr, MLX5_EEPROM_LOW_PAGE,
+ read_addr, i2c.page,
(uint32_t)(i2c.offset + size_read),
(uint32_t)(i2c.len - size_read), module_num,
(uint32_t *)(i2c.data + size_read), &size_read);