diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c | 7 | ||||
| -rw-r--r-- | drivers/net/ethernet/chelsio/cxgb4/t4_hw.h | 2 | 
2 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c index 5903bdb78916..129352bbe114 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c @@ -2015,12 +2015,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; -			modinfo->eeprom_len = ETH_MODULE_SFF_8472_LEN; +			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; diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.h b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.h index 002fc62ea726..63bc956d2037 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.h +++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.h @@ -293,6 +293,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  | 
