xref: /linux-6.15/include/net/eee.h (revision 6b998404)
16f2fc858SRussell King /* SPDX-License-Identifier: GPL-2.0-only */
26f2fc858SRussell King #ifndef _EEE_H
36f2fc858SRussell King #define _EEE_H
46f2fc858SRussell King 
56f2fc858SRussell King #include <linux/types.h>
66f2fc858SRussell King 
76f2fc858SRussell King struct eee_config {
86f2fc858SRussell King 	u32 tx_lpi_timer;
96f2fc858SRussell King 	bool tx_lpi_enabled;
106f2fc858SRussell King 	bool eee_enabled;
116f2fc858SRussell King };
126f2fc858SRussell King 
eeecfg_mac_can_tx_lpi(const struct eee_config * eeecfg)136f2fc858SRussell King static inline bool eeecfg_mac_can_tx_lpi(const struct eee_config *eeecfg)
146f2fc858SRussell King {
156f2fc858SRussell King 	/* eee_enabled is the master on/off */
16*6b998404SHeiner Kallweit 	return eeecfg->eee_enabled && eeecfg->tx_lpi_enabled;
176f2fc858SRussell King }
186f2fc858SRussell King 
eeecfg_to_eee(struct ethtool_keee * eee,const struct eee_config * eeecfg)196f2fc858SRussell King static inline void eeecfg_to_eee(struct ethtool_keee *eee,
206f2fc858SRussell King 				 const struct eee_config *eeecfg)
216f2fc858SRussell King {
226f2fc858SRussell King 	eee->tx_lpi_timer = eeecfg->tx_lpi_timer;
236f2fc858SRussell King 	eee->tx_lpi_enabled = eeecfg->tx_lpi_enabled;
246f2fc858SRussell King 	eee->eee_enabled = eeecfg->eee_enabled;
256f2fc858SRussell King }
266f2fc858SRussell King 
eee_to_eeecfg(struct eee_config * eeecfg,const struct ethtool_keee * eee)276f2fc858SRussell King static inline void eee_to_eeecfg(struct eee_config *eeecfg,
286f2fc858SRussell King 				 const struct ethtool_keee *eee)
296f2fc858SRussell King {
306f2fc858SRussell King 	eeecfg->tx_lpi_timer = eee->tx_lpi_timer;
316f2fc858SRussell King 	eeecfg->tx_lpi_enabled = eee->tx_lpi_enabled;
326f2fc858SRussell King 	eeecfg->eee_enabled = eee->eee_enabled;
336f2fc858SRussell King }
346f2fc858SRussell King 
356f2fc858SRussell King #endif
36