| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /* Copyright (C) 2023 Intel Corporation */
- #ifndef _ICE_ETHTOOL_H_
- #define _ICE_ETHTOOL_H_
- struct ice_phy_type_to_ethtool {
- u64 aq_link_speed;
- u8 link_mode;
- };
- struct ice_serdes_equalization_to_ethtool {
- int rx_equ_pre2;
- int rx_equ_pre1;
- int rx_equ_post1;
- int rx_equ_bflf;
- int rx_equ_bfhf;
- int rx_equ_ctle_gainhf;
- int rx_equ_ctle_gainlf;
- int rx_equ_ctle_gaindc;
- int rx_equ_ctle_bw;
- int rx_equ_dfe_gain;
- int rx_equ_dfe_gain_2;
- int rx_equ_dfe_2;
- int rx_equ_dfe_3;
- int rx_equ_dfe_4;
- int rx_equ_dfe_5;
- int rx_equ_dfe_6;
- int rx_equ_dfe_7;
- int rx_equ_dfe_8;
- int rx_equ_dfe_9;
- int rx_equ_dfe_10;
- int rx_equ_dfe_11;
- int rx_equ_dfe_12;
- int tx_equ_pre1;
- int tx_equ_pre3;
- int tx_equ_atten;
- int tx_equ_post1;
- int tx_equ_pre2;
- };
- struct ice_regdump_to_ethtool {
- /* A multilane port can have max 4 serdes */
- struct ice_serdes_equalization_to_ethtool equalization[4];
- };
- /* Port topology from lport i.e.
- * serdes mapping, pcsquad, macport, cage etc...
- */
- struct ice_port_topology {
- u16 pcs_port;
- u16 primary_serdes_lane;
- u16 serdes_lane_count;
- u16 pcs_quad_select;
- };
- /* Macro to make PHY type to Ethtool link mode table entry.
- * The index is the PHY type.
- */
- #define ICE_PHY_TYPE(LINK_SPEED, ETHTOOL_LINK_MODE) {\
- .aq_link_speed = ICE_AQ_LINK_SPEED_##LINK_SPEED, \
- .link_mode = ETHTOOL_LINK_MODE_##ETHTOOL_LINK_MODE##_BIT, \
- }
- /* Lookup table mapping PHY type low to link speed and Ethtool link modes.
- * Array index corresponds to HW PHY type bit, see
- * ice_adminq_cmd.h:ICE_PHY_TYPE_LOW_*.
- */
- static const struct ice_phy_type_to_ethtool
- phy_type_low_lkup[] = {
- [0] = ICE_PHY_TYPE(100MB, 100baseT_Full),
- [1] = ICE_PHY_TYPE(100MB, 100baseT_Full),
- [2] = ICE_PHY_TYPE(1000MB, 1000baseT_Full),
- [3] = ICE_PHY_TYPE(1000MB, 1000baseX_Full),
- [4] = ICE_PHY_TYPE(1000MB, 1000baseX_Full),
- [5] = ICE_PHY_TYPE(1000MB, 1000baseKX_Full),
- [6] = ICE_PHY_TYPE(1000MB, 1000baseT_Full),
- [7] = ICE_PHY_TYPE(2500MB, 2500baseT_Full),
- [8] = ICE_PHY_TYPE(2500MB, 2500baseX_Full),
- [9] = ICE_PHY_TYPE(2500MB, 2500baseX_Full),
- [10] = ICE_PHY_TYPE(5GB, 5000baseT_Full),
- [11] = ICE_PHY_TYPE(5GB, 5000baseT_Full),
- [12] = ICE_PHY_TYPE(10GB, 10000baseT_Full),
- [13] = ICE_PHY_TYPE(10GB, 10000baseCR_Full),
- [14] = ICE_PHY_TYPE(10GB, 10000baseSR_Full),
- [15] = ICE_PHY_TYPE(10GB, 10000baseLR_Full),
- [16] = ICE_PHY_TYPE(10GB, 10000baseKR_Full),
- [17] = ICE_PHY_TYPE(10GB, 10000baseCR_Full),
- [18] = ICE_PHY_TYPE(10GB, 10000baseKR_Full),
- [19] = ICE_PHY_TYPE(25GB, 25000baseCR_Full),
- [20] = ICE_PHY_TYPE(25GB, 25000baseCR_Full),
- [21] = ICE_PHY_TYPE(25GB, 25000baseCR_Full),
- [22] = ICE_PHY_TYPE(25GB, 25000baseCR_Full),
- [23] = ICE_PHY_TYPE(25GB, 25000baseSR_Full),
- [24] = ICE_PHY_TYPE(25GB, 25000baseSR_Full),
- [25] = ICE_PHY_TYPE(25GB, 25000baseKR_Full),
- [26] = ICE_PHY_TYPE(25GB, 25000baseKR_Full),
- [27] = ICE_PHY_TYPE(25GB, 25000baseKR_Full),
- [28] = ICE_PHY_TYPE(25GB, 25000baseSR_Full),
- [29] = ICE_PHY_TYPE(25GB, 25000baseCR_Full),
- [30] = ICE_PHY_TYPE(40GB, 40000baseCR4_Full),
- [31] = ICE_PHY_TYPE(40GB, 40000baseSR4_Full),
- [32] = ICE_PHY_TYPE(40GB, 40000baseLR4_Full),
- [33] = ICE_PHY_TYPE(40GB, 40000baseKR4_Full),
- [34] = ICE_PHY_TYPE(40GB, 40000baseSR4_Full),
- [35] = ICE_PHY_TYPE(40GB, 40000baseCR4_Full),
- [36] = ICE_PHY_TYPE(50GB, 50000baseCR2_Full),
- [37] = ICE_PHY_TYPE(50GB, 50000baseSR2_Full),
- [38] = ICE_PHY_TYPE(50GB, 50000baseSR2_Full),
- [39] = ICE_PHY_TYPE(50GB, 50000baseKR2_Full),
- [40] = ICE_PHY_TYPE(50GB, 50000baseSR2_Full),
- [41] = ICE_PHY_TYPE(50GB, 50000baseCR2_Full),
- [42] = ICE_PHY_TYPE(50GB, 50000baseSR2_Full),
- [43] = ICE_PHY_TYPE(50GB, 50000baseCR2_Full),
- [44] = ICE_PHY_TYPE(50GB, 50000baseCR_Full),
- [45] = ICE_PHY_TYPE(50GB, 50000baseSR_Full),
- [46] = ICE_PHY_TYPE(50GB, 50000baseLR_ER_FR_Full),
- [47] = ICE_PHY_TYPE(50GB, 50000baseLR_ER_FR_Full),
- [48] = ICE_PHY_TYPE(50GB, 50000baseKR_Full),
- [49] = ICE_PHY_TYPE(50GB, 50000baseSR_Full),
- [50] = ICE_PHY_TYPE(50GB, 50000baseCR_Full),
- [51] = ICE_PHY_TYPE(100GB, 100000baseCR4_Full),
- [52] = ICE_PHY_TYPE(100GB, 100000baseSR4_Full),
- [53] = ICE_PHY_TYPE(100GB, 100000baseLR4_ER4_Full),
- [54] = ICE_PHY_TYPE(100GB, 100000baseKR4_Full),
- [55] = ICE_PHY_TYPE(100GB, 100000baseCR4_Full),
- [56] = ICE_PHY_TYPE(100GB, 100000baseCR4_Full),
- [57] = ICE_PHY_TYPE(100GB, 100000baseSR4_Full),
- [58] = ICE_PHY_TYPE(100GB, 100000baseCR4_Full),
- [59] = ICE_PHY_TYPE(100GB, 100000baseCR4_Full),
- [60] = ICE_PHY_TYPE(100GB, 100000baseKR4_Full),
- [61] = ICE_PHY_TYPE(100GB, 100000baseCR2_Full),
- [62] = ICE_PHY_TYPE(100GB, 100000baseSR2_Full),
- [63] = ICE_PHY_TYPE(100GB, 100000baseLR4_ER4_Full),
- };
- /* Lookup table mapping PHY type high to link speed and Ethtool link modes.
- * Array index corresponds to HW PHY type bit, see
- * ice_adminq_cmd.h:ICE_PHY_TYPE_HIGH_*
- */
- static const struct ice_phy_type_to_ethtool
- phy_type_high_lkup[] = {
- [0] = ICE_PHY_TYPE(100GB, 100000baseKR2_Full),
- [1] = ICE_PHY_TYPE(100GB, 100000baseSR2_Full),
- [2] = ICE_PHY_TYPE(100GB, 100000baseCR2_Full),
- [3] = ICE_PHY_TYPE(100GB, 100000baseSR2_Full),
- [4] = ICE_PHY_TYPE(100GB, 100000baseCR2_Full),
- [5] = ICE_PHY_TYPE(200GB, 200000baseCR4_Full),
- [6] = ICE_PHY_TYPE(200GB, 200000baseSR4_Full),
- [7] = ICE_PHY_TYPE(200GB, 200000baseLR4_ER4_FR4_Full),
- [8] = ICE_PHY_TYPE(200GB, 200000baseLR4_ER4_FR4_Full),
- [9] = ICE_PHY_TYPE(200GB, 200000baseDR4_Full),
- [10] = ICE_PHY_TYPE(200GB, 200000baseKR4_Full),
- [11] = ICE_PHY_TYPE(200GB, 200000baseSR4_Full),
- [12] = ICE_PHY_TYPE(200GB, 200000baseCR4_Full),
- };
- #endif /* !_ICE_ETHTOOL_H_ */
|