From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB25D3E1CE7 for ; Sat, 16 May 2026 13:54:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778939691; cv=none; b=GYywA2s5bNg+6Z73dGL1fGKmm5HhSNkchQ2z68An8xlFRrJrPeVCRVFWZD6QTQZh+tkYJFKQFi6dJRkyF7XNE9cZrnQz/OazL/Df+KebFBzdqCU3ilMPtnruhbAcXDAE8B7TIcipKXPmTa0dEzOANK/xxBrk13i703OiE1CJML8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778939691; c=relaxed/simple; bh=VpoQujZ9GQMnf5nQHTEp2Qyqm03Jlz6XjLvYPy3uE5A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=blIGvd2Kp6IpyG1993i/9qMBUeBZ5H/eQEmjfcKjgj/zJMyF5AneRDehAsBAJHXYKJtoTphWaPp9zVH+Uc9n1KjBPIgzpHioN9NcWEH6vLRptfQ4wT3q9zT4n37Njvfi5Lf20BhLw/X+rio8rSRhuKWkXcBOBIn5uIb5MDgijZ0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lOSKGSXT; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lOSKGSXT" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-488a14c31eeso4116895e9.0 for ; Sat, 16 May 2026 06:54:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778939688; x=1779544488; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dIrvNnWJICom0gFogZEpaj6AR2Yk4bcfuHPYqmXxhME=; b=lOSKGSXT2SXGXiLWWQI/9SlV6wS+20MbZt3iKHpOFZbM04s9URdNu5GlXYVZFqLUYd 3GgsEf3zzmPdxH/NCDu3HqSYAx4F/q48JhzUT1/8U2rZ3bMB+ppStkh7A2SkzrsgxKHf jfSfJhcsdVPOWQBE90u2geodLM0MJXpwgCd02ZpUyNXZ07lKoyJuvnG9wU76syhqm9Ik CLgFR4Bh5BBRaS4WPtV6Zd2/TdEAmF9N7jeh5CXrh5y6vAT6cpE7R/hShYH5CNL7fQbi Xlry6e3SqiekDHB1gDefJb2B2PFs2RsNz0SnX7JguQpaebR6AYhcwe5jx/EMpKD1G5fp cgyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778939688; x=1779544488; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=dIrvNnWJICom0gFogZEpaj6AR2Yk4bcfuHPYqmXxhME=; b=HCQQdNPo/kv+OOTCO44CmhSwu6yIV019sQl8zSN3IRCznLALRzViCjQKg93vkqtUqW HsF9Ptq4+Tnzmu/XGrsLbnN/mhTvRh2EvB4SBYrFzzr4drsJaPpprkdyW6ywp8XKdUXi UStXmCIeBv/TbIA5ElEHsr9rmWZzs7PRlyj9YgzjLGULyicuK9H1kuh9zhCehZqgH1by OCdcS14PwOcSDQKFUEYZ+iZXkqlzkwyVW6/fMhfpv/pkQ4ur9YuLeUh5BkRlxcodsQ7M DfsU7ktPVvKkolF4/pylJatOoaVGhqJcDdDTkaeTMGYKT5B+1L2MhyU0ebudacImVhF9 NN7A== X-Forwarded-Encrypted: i=1; AFNElJ+vivFYgV4FXWRwfUMxrhHUSG6nmLzIwSfsLKoICjb8LclpKL/5BqXBS+eDoAuCjTVAsJAS7yZiQ6aqiWQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yys3xa5Hq4zNX+nhAOKD42415jLnCRF8Q2bqmm+RY/FUJIUplwU MLmITYq2miDOzhfNKj9JGs0vXSnLiTkS2EPZ60Vrw8iqUO2SInh/DewW X-Gm-Gg: Acq92OFtFqSvLMG1WaLWATUh1RDwzDZWoQU0AM8L3mpTH66ldkxZVQNxraSIG3yRMZX +5WaaQW2BWUUaTcrVnx0Lp68VdyVD/d1Rvr6//JCkLknzoxhAEIbEA2aNSzRjh/AfMMmI4rP6+n Y0UrNywPo0YbvzbkLtNdxjIGoe3e7Dy8Uh04nTUpPsBOUNZZUUPdamCaT76ijML+LvkrEus1zzt geZofXhRScqBHcu4sXlvC1HKlUCj+t2bH+ZZtIySK4EpnoLq/BlRamkWoPS765aogRU2OET12M5 bkoBiQyHNnmO933z6ZBLxmMhqRq4B2N/MoN09LmwJnhM+TIeKyRcGFwmDJ/EIjnb8WjqFHuwXUx 4esTIooaTtA3A3Adz6wIT5/K22rP2PO3DAI9pgK9eD7EcdSSQ05JQwh3UKOJbh0gIWTumo5b9ed TilkHJ8n6NHEdJZ6oKhExGP4GOTQ== X-Received: by 2002:a05:600c:4685:b0:48e:5d91:cfe3 with SMTP id 5b1f17b1804b1-48fe5fd494dmr113773895e9.1.1778939687859; Sat, 16 May 2026 06:54:47 -0700 (PDT) Received: from builder ([2001:9e8:f136:a916:be24:11ff:fe30:5d85]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48fe537c788sm123360645e9.12.2026.05.16.06.54.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 06:54:47 -0700 (PDT) From: Jonas Jelonek To: Russell King , Andrew Lunn , Heiner Kallweit , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Maxime Chevallier Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Bj=C3=B8rn=20Mork?= , Simon Horman , Jonas Jelonek Subject: [PATCH net-next v8 1/2] net: sfp: apply I2C adapter quirks to limit block size Date: Sat, 16 May 2026 13:54:41 +0000 Message-ID: <20260516135442.2234729-2-jelonek.jonas@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260516135442.2234729-1-jelonek.jonas@gmail.com> References: <20260516135442.2234729-1-jelonek.jonas@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The SFP driver assumes all I2C adapters support reading and writing the pre-defined block size SFP_EEPROM_BLOCK_SIZE of 16 bytes. This constant was probably chosen based on good guesses and known limitations of a range of I2C adapters and SFP modules. However, I2C adapters may even support less and usually need to specify this via I2C quirks. Theoretically, such an adapter may provide full functionality but only support a read and write length of e.g. 8 bytes. Currently, the SFP driver doesn't account for that. Add handling for I2C quirks in SFP I2C configuration taking the fields max_read_len and max_write_len in struct i2c_adapter_quirks into account to further limit the maximum block size if needed. Signed-off-by: Jonas Jelonek --- drivers/net/phy/sfp.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/sfp.c b/drivers/net/phy/sfp.c index bd970f753beb..e58e29a1e8d2 100644 --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c @@ -807,21 +807,29 @@ static int sfp_smbus_byte_write(struct sfp *sfp, bool a2, u8 dev_addr, static int sfp_i2c_configure(struct sfp *sfp, struct i2c_adapter *i2c) { + size_t max_block_size; + sfp->i2c = i2c; if (i2c_check_functionality(i2c, I2C_FUNC_I2C)) { sfp->read = sfp_i2c_read; sfp->write = sfp_i2c_write; - sfp->i2c_max_block_size = SFP_EEPROM_BLOCK_SIZE; + max_block_size = SFP_EEPROM_BLOCK_SIZE; } else if (i2c_check_functionality(i2c, I2C_FUNC_SMBUS_BYTE_DATA)) { sfp->read = sfp_smbus_byte_read; sfp->write = sfp_smbus_byte_write; - sfp->i2c_max_block_size = 1; + max_block_size = 1; } else { sfp->i2c = NULL; return -EINVAL; } + if (i2c->quirks && i2c->quirks->max_read_len) + max_block_size = min(max_block_size, i2c->quirks->max_read_len); + if (i2c->quirks && i2c->quirks->max_write_len) + max_block_size = min(max_block_size, i2c->quirks->max_write_len); + + sfp->i2c_max_block_size = max_block_size; return 0; } -- 2.51.0