Lines Matching refs:ecmd

643 static int netdev_get_ecmd(struct net_device *dev, struct ethtool_cmd *ecmd);
644 static int netdev_set_ecmd(struct net_device *dev, struct ethtool_cmd *ecmd);
2574 static int get_settings(struct net_device *dev, struct ethtool_cmd *ecmd) in get_settings() argument
2578 netdev_get_ecmd(dev, ecmd); in get_settings()
2583 static int set_settings(struct net_device *dev, struct ethtool_cmd *ecmd) in set_settings() argument
2588 res = netdev_set_ecmd(dev, ecmd); in set_settings()
2818 static int netdev_get_ecmd(struct net_device *dev, struct ethtool_cmd *ecmd) in netdev_get_ecmd() argument
2823 ecmd->port = dev->if_port; in netdev_get_ecmd()
2824 ethtool_cmd_speed_set(ecmd, np->speed); in netdev_get_ecmd()
2825 ecmd->duplex = np->duplex; in netdev_get_ecmd()
2826 ecmd->autoneg = np->autoneg; in netdev_get_ecmd()
2827 ecmd->advertising = 0; in netdev_get_ecmd()
2829 ecmd->advertising |= ADVERTISED_10baseT_Half; in netdev_get_ecmd()
2831 ecmd->advertising |= ADVERTISED_10baseT_Full; in netdev_get_ecmd()
2833 ecmd->advertising |= ADVERTISED_100baseT_Half; in netdev_get_ecmd()
2835 ecmd->advertising |= ADVERTISED_100baseT_Full; in netdev_get_ecmd()
2836 ecmd->supported = (SUPPORTED_Autoneg | in netdev_get_ecmd()
2840 ecmd->phy_address = np->phy_addr_external; in netdev_get_ecmd()
2860 switch (ecmd->port) { in netdev_get_ecmd()
2863 ecmd->advertising |= ADVERTISED_TP; in netdev_get_ecmd()
2864 ecmd->transceiver = XCVR_INTERNAL; in netdev_get_ecmd()
2867 ecmd->advertising |= ADVERTISED_MII; in netdev_get_ecmd()
2868 ecmd->transceiver = XCVR_EXTERNAL; in netdev_get_ecmd()
2871 ecmd->advertising |= ADVERTISED_FIBRE; in netdev_get_ecmd()
2872 ecmd->transceiver = XCVR_EXTERNAL; in netdev_get_ecmd()
2877 if (ecmd->autoneg == AUTONEG_ENABLE) { in netdev_get_ecmd()
2878 ecmd->advertising |= ADVERTISED_Autoneg; in netdev_get_ecmd()
2882 ethtool_cmd_speed_set(ecmd, SPEED_100); in netdev_get_ecmd()
2884 ethtool_cmd_speed_set(ecmd, SPEED_10); in netdev_get_ecmd()
2886 ecmd->duplex = DUPLEX_FULL; in netdev_get_ecmd()
2888 ecmd->duplex = DUPLEX_HALF; in netdev_get_ecmd()
2896 static int netdev_set_ecmd(struct net_device *dev, struct ethtool_cmd *ecmd) in netdev_set_ecmd() argument
2900 if (ecmd->port != PORT_TP && ecmd->port != PORT_MII && ecmd->port != PORT_FIBRE) in netdev_set_ecmd()
2902 if (ecmd->transceiver != XCVR_INTERNAL && ecmd->transceiver != XCVR_EXTERNAL) in netdev_set_ecmd()
2904 if (ecmd->autoneg == AUTONEG_ENABLE) { in netdev_set_ecmd()
2905 if ((ecmd->advertising & (ADVERTISED_10baseT_Half | in netdev_set_ecmd()
2911 } else if (ecmd->autoneg == AUTONEG_DISABLE) { in netdev_set_ecmd()
2912 u32 speed = ethtool_cmd_speed(ecmd); in netdev_set_ecmd()
2915 if (ecmd->duplex != DUPLEX_HALF && ecmd->duplex != DUPLEX_FULL) in netdev_set_ecmd()
2926 if (np->ignore_phy && (ecmd->autoneg == AUTONEG_ENABLE || in netdev_set_ecmd()
2927 ecmd->port == PORT_TP)) in netdev_set_ecmd()
2946 dev->if_port = ecmd->port; in netdev_set_ecmd()
2947 np->autoneg = ecmd->autoneg; in netdev_set_ecmd()
2948 np->phy_addr_external = ecmd->phy_address & PhyAddrMask; in netdev_set_ecmd()
2952 if (ecmd->advertising & ADVERTISED_10baseT_Half) in netdev_set_ecmd()
2954 if (ecmd->advertising & ADVERTISED_10baseT_Full) in netdev_set_ecmd()
2956 if (ecmd->advertising & ADVERTISED_100baseT_Half) in netdev_set_ecmd()
2958 if (ecmd->advertising & ADVERTISED_100baseT_Full) in netdev_set_ecmd()
2961 np->speed = ethtool_cmd_speed(ecmd); in netdev_set_ecmd()
2962 np->duplex = ecmd->duplex; in netdev_set_ecmd()
2969 if (ecmd->port == PORT_TP) in netdev_set_ecmd()