Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2703a866 authored by Rahul Lakkireddy's avatar Rahul Lakkireddy Committed by Greg Kroah-Hartman
Browse files

cxgb4: fix eeprom len when diagnostics not implemented



[ Upstream commit 4ca110bf8d9b31a60f8f8ff6706ea147d38ad97c ]

Ensure diagnostics monitoring support is implemented for the SFF 8472
compliant port module and set the correct length for ethtool port
module eeprom read.

Fixes: f56ec676 ("cxgb4: Add support for ethtool i2c dump")
Signed-off-by: default avatarManoj Malviya <manojmalviya@chelsio.com>
Signed-off-by: default avatarRahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 0608664f
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -1304,12 +1304,15 @@ static int cxgb4_get_module_info(struct net_device *dev,
		if (ret)
			return ret;

		if (!sff8472_comp || (sff_diag_type & 4)) {
		if (!sff8472_comp || (sff_diag_type & SFP_DIAG_ADDRMODE)) {
			modinfo->type = ETH_MODULE_SFF_8079;
			modinfo->eeprom_len = ETH_MODULE_SFF_8079_LEN;
		} else {
			modinfo->type = ETH_MODULE_SFF_8472;
			if (sff_diag_type & SFP_DIAG_IMPLEMENTED)
				modinfo->eeprom_len = ETH_MODULE_SFF_8472_LEN;
			else
				modinfo->eeprom_len = ETH_MODULE_SFF_8472_LEN / 2;
		}
		break;

+2 −0
Original line number Diff line number Diff line
@@ -292,6 +292,8 @@ enum {
#define I2C_PAGE_SIZE		0x100
#define SFP_DIAG_TYPE_ADDR	0x5c
#define SFP_DIAG_TYPE_LEN	0x1
#define SFP_DIAG_ADDRMODE	BIT(2)
#define SFP_DIAG_IMPLEMENTED	BIT(6)
#define SFF_8472_COMP_ADDR	0x5e
#define SFF_8472_COMP_LEN	0x1
#define SFF_REV_ADDR		0x1