162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* Copyright (C) 2023 Intel Corporation */ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef _ICE_ETHTOOL_H_ 562306a36Sopenharmony_ci#define _ICE_ETHTOOL_H_ 662306a36Sopenharmony_ci 762306a36Sopenharmony_cistruct ice_phy_type_to_ethtool { 862306a36Sopenharmony_ci u64 aq_link_speed; 962306a36Sopenharmony_ci u8 link_mode; 1062306a36Sopenharmony_ci}; 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci/* Macro to make PHY type to Ethtool link mode table entry. 1362306a36Sopenharmony_ci * The index is the PHY type. 1462306a36Sopenharmony_ci */ 1562306a36Sopenharmony_ci#define ICE_PHY_TYPE(LINK_SPEED, ETHTOOL_LINK_MODE) {\ 1662306a36Sopenharmony_ci .aq_link_speed = ICE_AQ_LINK_SPEED_##LINK_SPEED, \ 1762306a36Sopenharmony_ci .link_mode = ETHTOOL_LINK_MODE_##ETHTOOL_LINK_MODE##_BIT, \ 1862306a36Sopenharmony_ci} 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci/* Lookup table mapping PHY type low to link speed and Ethtool link modes. 2162306a36Sopenharmony_ci * Array index corresponds to HW PHY type bit, see 2262306a36Sopenharmony_ci * ice_adminq_cmd.h:ICE_PHY_TYPE_LOW_*. 2362306a36Sopenharmony_ci */ 2462306a36Sopenharmony_cistatic const struct ice_phy_type_to_ethtool 2562306a36Sopenharmony_ciphy_type_low_lkup[] = { 2662306a36Sopenharmony_ci [0] = ICE_PHY_TYPE(100MB, 100baseT_Full), 2762306a36Sopenharmony_ci [1] = ICE_PHY_TYPE(100MB, 100baseT_Full), 2862306a36Sopenharmony_ci [2] = ICE_PHY_TYPE(1000MB, 1000baseT_Full), 2962306a36Sopenharmony_ci [3] = ICE_PHY_TYPE(1000MB, 1000baseX_Full), 3062306a36Sopenharmony_ci [4] = ICE_PHY_TYPE(1000MB, 1000baseX_Full), 3162306a36Sopenharmony_ci [5] = ICE_PHY_TYPE(1000MB, 1000baseKX_Full), 3262306a36Sopenharmony_ci [6] = ICE_PHY_TYPE(1000MB, 1000baseT_Full), 3362306a36Sopenharmony_ci [7] = ICE_PHY_TYPE(2500MB, 2500baseT_Full), 3462306a36Sopenharmony_ci [8] = ICE_PHY_TYPE(2500MB, 2500baseX_Full), 3562306a36Sopenharmony_ci [9] = ICE_PHY_TYPE(2500MB, 2500baseX_Full), 3662306a36Sopenharmony_ci [10] = ICE_PHY_TYPE(5GB, 5000baseT_Full), 3762306a36Sopenharmony_ci [11] = ICE_PHY_TYPE(5GB, 5000baseT_Full), 3862306a36Sopenharmony_ci [12] = ICE_PHY_TYPE(10GB, 10000baseT_Full), 3962306a36Sopenharmony_ci [13] = ICE_PHY_TYPE(10GB, 10000baseCR_Full), 4062306a36Sopenharmony_ci [14] = ICE_PHY_TYPE(10GB, 10000baseSR_Full), 4162306a36Sopenharmony_ci [15] = ICE_PHY_TYPE(10GB, 10000baseLR_Full), 4262306a36Sopenharmony_ci [16] = ICE_PHY_TYPE(10GB, 10000baseKR_Full), 4362306a36Sopenharmony_ci [17] = ICE_PHY_TYPE(10GB, 10000baseCR_Full), 4462306a36Sopenharmony_ci [18] = ICE_PHY_TYPE(10GB, 10000baseKR_Full), 4562306a36Sopenharmony_ci [19] = ICE_PHY_TYPE(25GB, 25000baseCR_Full), 4662306a36Sopenharmony_ci [20] = ICE_PHY_TYPE(25GB, 25000baseCR_Full), 4762306a36Sopenharmony_ci [21] = ICE_PHY_TYPE(25GB, 25000baseCR_Full), 4862306a36Sopenharmony_ci [22] = ICE_PHY_TYPE(25GB, 25000baseCR_Full), 4962306a36Sopenharmony_ci [23] = ICE_PHY_TYPE(25GB, 25000baseSR_Full), 5062306a36Sopenharmony_ci [24] = ICE_PHY_TYPE(25GB, 25000baseSR_Full), 5162306a36Sopenharmony_ci [25] = ICE_PHY_TYPE(25GB, 25000baseKR_Full), 5262306a36Sopenharmony_ci [26] = ICE_PHY_TYPE(25GB, 25000baseKR_Full), 5362306a36Sopenharmony_ci [27] = ICE_PHY_TYPE(25GB, 25000baseKR_Full), 5462306a36Sopenharmony_ci [28] = ICE_PHY_TYPE(25GB, 25000baseSR_Full), 5562306a36Sopenharmony_ci [29] = ICE_PHY_TYPE(25GB, 25000baseCR_Full), 5662306a36Sopenharmony_ci [30] = ICE_PHY_TYPE(40GB, 40000baseCR4_Full), 5762306a36Sopenharmony_ci [31] = ICE_PHY_TYPE(40GB, 40000baseSR4_Full), 5862306a36Sopenharmony_ci [32] = ICE_PHY_TYPE(40GB, 40000baseLR4_Full), 5962306a36Sopenharmony_ci [33] = ICE_PHY_TYPE(40GB, 40000baseKR4_Full), 6062306a36Sopenharmony_ci [34] = ICE_PHY_TYPE(40GB, 40000baseSR4_Full), 6162306a36Sopenharmony_ci [35] = ICE_PHY_TYPE(40GB, 40000baseCR4_Full), 6262306a36Sopenharmony_ci [36] = ICE_PHY_TYPE(50GB, 50000baseCR2_Full), 6362306a36Sopenharmony_ci [37] = ICE_PHY_TYPE(50GB, 50000baseSR2_Full), 6462306a36Sopenharmony_ci [38] = ICE_PHY_TYPE(50GB, 50000baseSR2_Full), 6562306a36Sopenharmony_ci [39] = ICE_PHY_TYPE(50GB, 50000baseKR2_Full), 6662306a36Sopenharmony_ci [40] = ICE_PHY_TYPE(50GB, 50000baseSR2_Full), 6762306a36Sopenharmony_ci [41] = ICE_PHY_TYPE(50GB, 50000baseCR2_Full), 6862306a36Sopenharmony_ci [42] = ICE_PHY_TYPE(50GB, 50000baseSR2_Full), 6962306a36Sopenharmony_ci [43] = ICE_PHY_TYPE(50GB, 50000baseCR2_Full), 7062306a36Sopenharmony_ci [44] = ICE_PHY_TYPE(50GB, 50000baseCR_Full), 7162306a36Sopenharmony_ci [45] = ICE_PHY_TYPE(50GB, 50000baseSR_Full), 7262306a36Sopenharmony_ci [46] = ICE_PHY_TYPE(50GB, 50000baseLR_ER_FR_Full), 7362306a36Sopenharmony_ci [47] = ICE_PHY_TYPE(50GB, 50000baseLR_ER_FR_Full), 7462306a36Sopenharmony_ci [48] = ICE_PHY_TYPE(50GB, 50000baseKR_Full), 7562306a36Sopenharmony_ci [49] = ICE_PHY_TYPE(50GB, 50000baseSR_Full), 7662306a36Sopenharmony_ci [50] = ICE_PHY_TYPE(50GB, 50000baseCR_Full), 7762306a36Sopenharmony_ci [51] = ICE_PHY_TYPE(100GB, 100000baseCR4_Full), 7862306a36Sopenharmony_ci [52] = ICE_PHY_TYPE(100GB, 100000baseSR4_Full), 7962306a36Sopenharmony_ci [53] = ICE_PHY_TYPE(100GB, 100000baseLR4_ER4_Full), 8062306a36Sopenharmony_ci [54] = ICE_PHY_TYPE(100GB, 100000baseKR4_Full), 8162306a36Sopenharmony_ci [55] = ICE_PHY_TYPE(100GB, 100000baseCR4_Full), 8262306a36Sopenharmony_ci [56] = ICE_PHY_TYPE(100GB, 100000baseCR4_Full), 8362306a36Sopenharmony_ci [57] = ICE_PHY_TYPE(100GB, 100000baseSR4_Full), 8462306a36Sopenharmony_ci [58] = ICE_PHY_TYPE(100GB, 100000baseCR4_Full), 8562306a36Sopenharmony_ci [59] = ICE_PHY_TYPE(100GB, 100000baseCR4_Full), 8662306a36Sopenharmony_ci [60] = ICE_PHY_TYPE(100GB, 100000baseKR4_Full), 8762306a36Sopenharmony_ci [61] = ICE_PHY_TYPE(100GB, 100000baseCR2_Full), 8862306a36Sopenharmony_ci [62] = ICE_PHY_TYPE(100GB, 100000baseSR2_Full), 8962306a36Sopenharmony_ci [63] = ICE_PHY_TYPE(100GB, 100000baseLR4_ER4_Full), 9062306a36Sopenharmony_ci}; 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci/* Lookup table mapping PHY type high to link speed and Ethtool link modes. 9362306a36Sopenharmony_ci * Array index corresponds to HW PHY type bit, see 9462306a36Sopenharmony_ci * ice_adminq_cmd.h:ICE_PHY_TYPE_HIGH_* 9562306a36Sopenharmony_ci */ 9662306a36Sopenharmony_cistatic const struct ice_phy_type_to_ethtool 9762306a36Sopenharmony_ciphy_type_high_lkup[] = { 9862306a36Sopenharmony_ci [0] = ICE_PHY_TYPE(100GB, 100000baseKR2_Full), 9962306a36Sopenharmony_ci [1] = ICE_PHY_TYPE(100GB, 100000baseSR2_Full), 10062306a36Sopenharmony_ci [2] = ICE_PHY_TYPE(100GB, 100000baseCR2_Full), 10162306a36Sopenharmony_ci [3] = ICE_PHY_TYPE(100GB, 100000baseSR2_Full), 10262306a36Sopenharmony_ci [4] = ICE_PHY_TYPE(100GB, 100000baseCR2_Full), 10362306a36Sopenharmony_ci}; 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci#endif /* !_ICE_ETHTOOL_H_ */ 106