diff -Naur ixgbe-5.13.4/src/ixgbe_phy.c ixgbe-5.13.4-Free-ONUv1/src/ixgbe_phy.c --- ixgbe-5.13.4/src/ixgbe_phy.c 2021-09-07 09:07:07.000000000 +0000 +++ ixgbe-5.13.4-Free-ONUv1/src/ixgbe_phy.c 2022-02-25 20:54:03.176521699 +0000 @@ -1374,6 +1374,7 @@ if (hw->bus.lan_id == 0) hw->phy.sfp_type = ixgbe_sfp_type_1g_cu_core0; + else hw->phy.sfp_type = ixgbe_sfp_type_1g_cu_core1; @@ -1391,6 +1392,16 @@ else hw->phy.sfp_type = ixgbe_sfp_type_1g_lx_core1; + } else if (comp_codes_1g == 0 && comp_codes_10g == 0 && cable_tech == 0) { + /* This is just a simple workaround for Free. + * Free ONUv1 answers to cable_tech, and compatibilty codes requests with 0 + * However, its acts as if it were a 1Gbps Copper tranceiver. + */ + if (hw->bus.lan_id == 0) + hw->phy.sfp_type = + ixgbe_sfp_type_1g_cu_core0; + else + hw->phy.sfp_type = + ixgbe_sfp_type_1g_cu_core1; } else { hw->phy.sfp_type = ixgbe_sfp_type_unknown; } @@ -1461,6 +1472,8 @@ else if (cable_tech & IXGBE_SFF_DA_ACTIVE_CABLE) hw->phy.type = ixgbe_phy_sfp_active_unknown; + else if (comp_codes_1g == 0 && comp_codes_10g == 0 && cable_tech == 0) + ixgbe_phy_sfp_passive_unknown; else hw->phy.type = ixgbe_phy_sfp_unknown; break; }