On Wed, Jul 01, 2026 at 09:07:03AM +0000, Mingjin Ye wrote:
> The ixgbe_get_module_info() and ixgbe_get_module_eeprom() functions
> attempt to read SFF EEPROM data for all port types. However, copper
> media ports do not have SFF EEPROMs, causing invalid I2C operations
> and generating error logs.
>
> This patch adds a media type check at the beginning of both functions.
> If the media type is ixgbe_media_type_copper, return -ENOTSUP to
> safely skip the EEPROM read.
>
> Fixes: b74d0cd43e37 ("net/ixgbe: add module EEPROM callbacks for ixgbe")
> Cc: [email protected]
>
> Signed-off-by: Mingjin Ye <[email protected]>
> ---
> drivers/net/intel/ixgbe/ixgbe_ethdev.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/drivers/net/intel/ixgbe/ixgbe_ethdev.c
> b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
> index f9de95e4fc..44c29f0642 100644
> --- a/drivers/net/intel/ixgbe/ixgbe_ethdev.c
> +++ b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
> @@ -7424,6 +7424,12 @@ ixgbe_get_module_info(struct rte_eth_dev *dev,
> if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> return -E_RTE_SECONDARY;
>
> + if (hw->phy.media_type == ixgbe_media_type_copper) {
> + PMD_DRV_LOG(DEBUG, "Port %u is Base-T (copper), no SFF module
> info.",
> + dev->data->port_id);
> + return -ENOTSUP;
> + }
> +
> /* Check whether we support SFF-8472 or not */
> status = hw->phy.ops.read_i2c_eeprom(hw,
> IXGBE_SFF_SFF_8472_COMP,
> @@ -7477,6 +7483,12 @@ ixgbe_get_module_eeprom(struct rte_eth_dev *dev,
> if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> return -E_RTE_SECONDARY;
>
> + if (hw->phy.media_type == ixgbe_media_type_copper) {
> + PMD_DRV_LOG(DEBUG, "Port %u is Base-T (copper), cannot read
> module EEPROM.",
> + dev->data->port_id);
> + return -ENOTSUP;
> + }
> +
Looks reasonable.
Acked-by: Bruce Richardson <[email protected]>