| #ifndef __BACKPORT_LINUX_MII_H |
| #define __BACKPORT_LINUX_MII_H |
| #include_next <linux/mii.h> |
| #include <linux/version.h> |
| |
| #if LINUX_VERSION_IS_LESS(3,3,0) |
| #include <linux/ethtool.h> |
| |
| #define ethtool_adv_to_mii_adv_t LINUX_BACKPORT(ethtool_adv_to_mii_adv_t) |
| static inline u32 ethtool_adv_to_mii_adv_t(u32 ethadv) |
| { |
| u32 result = 0; |
| |
| if (ethadv & ADVERTISED_10baseT_Half) |
| result |= ADVERTISE_10HALF; |
| if (ethadv & ADVERTISED_10baseT_Full) |
| result |= ADVERTISE_10FULL; |
| if (ethadv & ADVERTISED_100baseT_Half) |
| result |= ADVERTISE_100HALF; |
| if (ethadv & ADVERTISED_100baseT_Full) |
| result |= ADVERTISE_100FULL; |
| if (ethadv & ADVERTISED_Pause) |
| result |= ADVERTISE_PAUSE_CAP; |
| if (ethadv & ADVERTISED_Asym_Pause) |
| result |= ADVERTISE_PAUSE_ASYM; |
| |
| return result; |
| } |
| |
| #define mii_adv_to_ethtool_adv_t LINUX_BACKPORT(mii_adv_to_ethtool_adv_t) |
| static inline u32 mii_adv_to_ethtool_adv_t(u32 adv) |
| { |
| u32 result = 0; |
| |
| if (adv & ADVERTISE_10HALF) |
| result |= ADVERTISED_10baseT_Half; |
| if (adv & ADVERTISE_10FULL) |
| result |= ADVERTISED_10baseT_Full; |
| if (adv & ADVERTISE_100HALF) |
| result |= ADVERTISED_100baseT_Half; |
| if (adv & ADVERTISE_100FULL) |
| result |= ADVERTISED_100baseT_Full; |
| if (adv & ADVERTISE_PAUSE_CAP) |
| result |= ADVERTISED_Pause; |
| if (adv & ADVERTISE_PAUSE_ASYM) |
| result |= ADVERTISED_Asym_Pause; |
| |
| return result; |
| } |
| |
| #define ethtool_adv_to_mii_ctrl1000_t LINUX_BACKPORT(ethtool_adv_to_mii_ctrl1000_t) |
| static inline u32 ethtool_adv_to_mii_ctrl1000_t(u32 ethadv) |
| { |
| u32 result = 0; |
| |
| if (ethadv & ADVERTISED_1000baseT_Half) |
| result |= ADVERTISE_1000HALF; |
| if (ethadv & ADVERTISED_1000baseT_Full) |
| result |= ADVERTISE_1000FULL; |
| |
| return result; |
| } |
| |
| #define mii_ctrl1000_to_ethtool_adv_t LINUX_BACKPORT(mii_ctrl1000_to_ethtool_adv_t) |
| static inline u32 mii_ctrl1000_to_ethtool_adv_t(u32 adv) |
| { |
| u32 result = 0; |
| |
| if (adv & ADVERTISE_1000HALF) |
| result |= ADVERTISED_1000baseT_Half; |
| if (adv & ADVERTISE_1000FULL) |
| result |= ADVERTISED_1000baseT_Full; |
| |
| return result; |
| } |
| |
| #define mii_lpa_to_ethtool_lpa_t LINUX_BACKPORT(mii_lpa_to_ethtool_lpa_t) |
| static inline u32 mii_lpa_to_ethtool_lpa_t(u32 lpa) |
| { |
| u32 result = 0; |
| |
| if (lpa & LPA_LPACK) |
| result |= ADVERTISED_Autoneg; |
| |
| return result | mii_adv_to_ethtool_adv_t(lpa); |
| } |
| |
| #define mii_stat1000_to_ethtool_lpa_t LINUX_BACKPORT(mii_stat1000_to_ethtool_lpa_t) |
| static inline u32 mii_stat1000_to_ethtool_lpa_t(u32 lpa) |
| { |
| u32 result = 0; |
| |
| if (lpa & LPA_1000HALF) |
| result |= ADVERTISED_1000baseT_Half; |
| if (lpa & LPA_1000FULL) |
| result |= ADVERTISED_1000baseT_Full; |
| |
| return result; |
| } |
| |
| #define ethtool_adv_to_mii_adv_x LINUX_BACKPORT(ethtool_adv_to_mii_adv_x) |
| static inline u32 ethtool_adv_to_mii_adv_x(u32 ethadv) |
| { |
| u32 result = 0; |
| |
| if (ethadv & ADVERTISED_1000baseT_Half) |
| result |= ADVERTISE_1000XHALF; |
| if (ethadv & ADVERTISED_1000baseT_Full) |
| result |= ADVERTISE_1000XFULL; |
| if (ethadv & ADVERTISED_Pause) |
| result |= ADVERTISE_1000XPAUSE; |
| if (ethadv & ADVERTISED_Asym_Pause) |
| result |= ADVERTISE_1000XPSE_ASYM; |
| |
| return result; |
| } |
| |
| #define mii_adv_to_ethtool_adv_x LINUX_BACKPORT(mii_adv_to_ethtool_adv_x) |
| static inline u32 mii_adv_to_ethtool_adv_x(u32 adv) |
| { |
| u32 result = 0; |
| |
| if (adv & ADVERTISE_1000XHALF) |
| result |= ADVERTISED_1000baseT_Half; |
| if (adv & ADVERTISE_1000XFULL) |
| result |= ADVERTISED_1000baseT_Full; |
| if (adv & ADVERTISE_1000XPAUSE) |
| result |= ADVERTISED_Pause; |
| if (adv & ADVERTISE_1000XPSE_ASYM) |
| result |= ADVERTISED_Asym_Pause; |
| |
| return result; |
| } |
| |
| #define mii_lpa_to_ethtool_lpa_x LINUX_BACKPORT(mii_lpa_to_ethtool_lpa_x) |
| static inline u32 mii_lpa_to_ethtool_lpa_x(u32 lpa) |
| { |
| u32 result = 0; |
| |
| if (lpa & LPA_LPACK) |
| result |= ADVERTISED_Autoneg; |
| |
| return result | mii_adv_to_ethtool_adv_x(lpa); |
| } |
| #endif |
| |
| #endif /* __BACKPORT_LINUX_MII_H */ |