]> Git Repo - linux.git/blob - drivers/net/ethernet/intel/ice/ice_ethtool.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[linux.git] / drivers / net / ethernet / intel / ice / ice_ethtool.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /* Copyright (C) 2023 Intel Corporation */
3
4 #ifndef _ICE_ETHTOOL_H_
5 #define _ICE_ETHTOOL_H_
6
7 struct ice_phy_type_to_ethtool {
8         u64 aq_link_speed;
9         u8 link_mode;
10 };
11
12 /* Macro to make PHY type to Ethtool link mode table entry.
13  * The index is the PHY type.
14  */
15 #define ICE_PHY_TYPE(LINK_SPEED, ETHTOOL_LINK_MODE) {\
16         .aq_link_speed = ICE_AQ_LINK_SPEED_##LINK_SPEED, \
17         .link_mode = ETHTOOL_LINK_MODE_##ETHTOOL_LINK_MODE##_BIT, \
18 }
19
20 /* Lookup table mapping PHY type low to link speed and Ethtool link modes.
21  * Array index corresponds to HW PHY type bit, see
22  * ice_adminq_cmd.h:ICE_PHY_TYPE_LOW_*.
23  */
24 static const struct ice_phy_type_to_ethtool
25 phy_type_low_lkup[] = {
26         [0] = ICE_PHY_TYPE(100MB, 100baseT_Full),
27         [1] = ICE_PHY_TYPE(100MB, 100baseT_Full),
28         [2] = ICE_PHY_TYPE(1000MB, 1000baseT_Full),
29         [3] = ICE_PHY_TYPE(1000MB, 1000baseX_Full),
30         [4] = ICE_PHY_TYPE(1000MB, 1000baseX_Full),
31         [5] = ICE_PHY_TYPE(1000MB, 1000baseKX_Full),
32         [6] = ICE_PHY_TYPE(1000MB, 1000baseT_Full),
33         [7] = ICE_PHY_TYPE(2500MB, 2500baseT_Full),
34         [8] = ICE_PHY_TYPE(2500MB, 2500baseX_Full),
35         [9] = ICE_PHY_TYPE(2500MB, 2500baseX_Full),
36         [10] = ICE_PHY_TYPE(5GB, 5000baseT_Full),
37         [11] = ICE_PHY_TYPE(5GB, 5000baseT_Full),
38         [12] = ICE_PHY_TYPE(10GB, 10000baseT_Full),
39         [13] = ICE_PHY_TYPE(10GB, 10000baseCR_Full),
40         [14] = ICE_PHY_TYPE(10GB, 10000baseSR_Full),
41         [15] = ICE_PHY_TYPE(10GB, 10000baseLR_Full),
42         [16] = ICE_PHY_TYPE(10GB, 10000baseKR_Full),
43         [17] = ICE_PHY_TYPE(10GB, 10000baseCR_Full),
44         [18] = ICE_PHY_TYPE(10GB, 10000baseKR_Full),
45         [19] = ICE_PHY_TYPE(25GB, 25000baseCR_Full),
46         [20] = ICE_PHY_TYPE(25GB, 25000baseCR_Full),
47         [21] = ICE_PHY_TYPE(25GB, 25000baseCR_Full),
48         [22] = ICE_PHY_TYPE(25GB, 25000baseCR_Full),
49         [23] = ICE_PHY_TYPE(25GB, 25000baseSR_Full),
50         [24] = ICE_PHY_TYPE(25GB, 25000baseSR_Full),
51         [25] = ICE_PHY_TYPE(25GB, 25000baseKR_Full),
52         [26] = ICE_PHY_TYPE(25GB, 25000baseKR_Full),
53         [27] = ICE_PHY_TYPE(25GB, 25000baseKR_Full),
54         [28] = ICE_PHY_TYPE(25GB, 25000baseSR_Full),
55         [29] = ICE_PHY_TYPE(25GB, 25000baseCR_Full),
56         [30] = ICE_PHY_TYPE(40GB, 40000baseCR4_Full),
57         [31] = ICE_PHY_TYPE(40GB, 40000baseSR4_Full),
58         [32] = ICE_PHY_TYPE(40GB, 40000baseLR4_Full),
59         [33] = ICE_PHY_TYPE(40GB, 40000baseKR4_Full),
60         [34] = ICE_PHY_TYPE(40GB, 40000baseSR4_Full),
61         [35] = ICE_PHY_TYPE(40GB, 40000baseCR4_Full),
62         [36] = ICE_PHY_TYPE(50GB, 50000baseCR2_Full),
63         [37] = ICE_PHY_TYPE(50GB, 50000baseSR2_Full),
64         [38] = ICE_PHY_TYPE(50GB, 50000baseSR2_Full),
65         [39] = ICE_PHY_TYPE(50GB, 50000baseKR2_Full),
66         [40] = ICE_PHY_TYPE(50GB, 50000baseSR2_Full),
67         [41] = ICE_PHY_TYPE(50GB, 50000baseCR2_Full),
68         [42] = ICE_PHY_TYPE(50GB, 50000baseSR2_Full),
69         [43] = ICE_PHY_TYPE(50GB, 50000baseCR2_Full),
70         [44] = ICE_PHY_TYPE(50GB, 50000baseCR_Full),
71         [45] = ICE_PHY_TYPE(50GB, 50000baseSR_Full),
72         [46] = ICE_PHY_TYPE(50GB, 50000baseLR_ER_FR_Full),
73         [47] = ICE_PHY_TYPE(50GB, 50000baseLR_ER_FR_Full),
74         [48] = ICE_PHY_TYPE(50GB, 50000baseKR_Full),
75         [49] = ICE_PHY_TYPE(50GB, 50000baseSR_Full),
76         [50] = ICE_PHY_TYPE(50GB, 50000baseCR_Full),
77         [51] = ICE_PHY_TYPE(100GB, 100000baseCR4_Full),
78         [52] = ICE_PHY_TYPE(100GB, 100000baseSR4_Full),
79         [53] = ICE_PHY_TYPE(100GB, 100000baseLR4_ER4_Full),
80         [54] = ICE_PHY_TYPE(100GB, 100000baseKR4_Full),
81         [55] = ICE_PHY_TYPE(100GB, 100000baseCR4_Full),
82         [56] = ICE_PHY_TYPE(100GB, 100000baseCR4_Full),
83         [57] = ICE_PHY_TYPE(100GB, 100000baseSR4_Full),
84         [58] = ICE_PHY_TYPE(100GB, 100000baseCR4_Full),
85         [59] = ICE_PHY_TYPE(100GB, 100000baseCR4_Full),
86         [60] = ICE_PHY_TYPE(100GB, 100000baseKR4_Full),
87         [61] = ICE_PHY_TYPE(100GB, 100000baseCR2_Full),
88         [62] = ICE_PHY_TYPE(100GB, 100000baseSR2_Full),
89         [63] = ICE_PHY_TYPE(100GB, 100000baseLR4_ER4_Full),
90 };
91
92 /* Lookup table mapping PHY type high to link speed and Ethtool link modes.
93  * Array index corresponds to HW PHY type bit, see
94  * ice_adminq_cmd.h:ICE_PHY_TYPE_HIGH_*
95  */
96 static const struct ice_phy_type_to_ethtool
97 phy_type_high_lkup[] = {
98         [0] = ICE_PHY_TYPE(100GB, 100000baseKR2_Full),
99         [1] = ICE_PHY_TYPE(100GB, 100000baseSR2_Full),
100         [2] = ICE_PHY_TYPE(100GB, 100000baseCR2_Full),
101         [3] = ICE_PHY_TYPE(100GB, 100000baseSR2_Full),
102         [4] = ICE_PHY_TYPE(100GB, 100000baseCR2_Full),
103 };
104
105 #endif /* !_ICE_ETHTOOL_H_ */
This page took 0.03591 seconds and 4 git commands to generate.