static int et_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) { END_DEVICE *ei_local = dev->priv; int rc; rc = mii_ethtool_sset(&ei_local->mii_info, cmd); return rc; }
/** * pch_gbe_set_settings - Set device-specific settings * @netdev: Network interface device structure * @ecmd: Ethtool command * Returns * 0: Successful. * Negative value: Failed. */ static int pch_gbe_set_settings(struct net_device *netdev, struct ethtool_cmd *ecmd) { struct pch_gbe_adapter *adapter = netdev_priv(netdev); struct pch_gbe_hw *hw = &adapter->hw; int ret; pch_gbe_hal_write_phy_reg(hw, MII_BMCR, BMCR_RESET); if (ecmd->speed == USHRT_MAX) { ecmd->speed = SPEED_1000; ecmd->duplex = DUPLEX_FULL; } ret = mii_ethtool_sset(&adapter->mii, ecmd); if (ret) { pr_err("Error: mii_ethtool_sset\n"); return ret; } hw->mac.link_speed = ecmd->speed; hw->mac.link_duplex = ecmd->duplex; hw->phy.autoneg_advertised = ecmd->advertising; hw->mac.autoneg = ecmd->autoneg; pch_gbe_hal_phy_sw_reset(hw); /* reset the link */ if (netif_running(adapter->netdev)) { pch_gbe_down(adapter); ret = pch_gbe_up(adapter); } else { pch_gbe_reset(adapter); } return ret; }
static int gp_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) { struct gt64240_private *gp = netdev_priv(dev); int rc; spin_lock_irq(&gp->lock); rc = mii_ethtool_sset(&gp->mii_if, cmd); spin_unlock_irq(&gp->lock); return rc; }
static int dmfe_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) { board_info_t *db = (board_info_t *)dev->priv; int rc; spin_lock_irq(&db->lock); rc = mii_ethtool_sset(&db->mii, cmd); spin_unlock_irq(&db->lock); return rc; }
static int cvm_oct_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) { struct octeon_ethernet *priv = netdev_priv(dev); int ret; down(&mdio_sem); ret = mii_ethtool_sset(&priv->mii_info, cmd); up(&mdio_sem); return ret; }
static int fs_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) { struct fs_enet_private *fep = netdev_priv(dev); unsigned long flags; int rc; spin_lock_irqsave(&fep->lock, flags); rc = mii_ethtool_sset(&fep->mii_if, cmd); spin_unlock_irqrestore(&fep->lock, flags); return rc; }
static int enet_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) { struct tangox_enet_priv *priv; int ret; priv = netdev_priv(dev); spin_lock_bh(&priv->mii_lock); ret = mii_ethtool_sset(&priv->mii, cmd); spin_unlock_bh(&priv->mii_lock); return ret; }
static int cdc_ncm_set_settings(struct net_device *net, struct ethtool_cmd *cmd) { struct usbnet *dev = netdev_priv(net); int retval; if (!dev->mii.mdio_write) return -EOPNOTSUPP; retval = mii_ethtool_sset(&dev->mii, cmd); /* link speed/duplex might have changed */ if (dev->driver_info->link_reset) dev->driver_info->link_reset(dev); return retval; }
static int ftmac100_set_settings(struct net_device *netdev, struct ethtool_cmd *cmd) { struct ftmac100 *priv = netdev_priv(netdev); return mii_ethtool_sset(&priv->mii, cmd); }
static int pegasus_ethtool_ioctl(struct net_device *dev, void __user *useraddr) { u32 ethcmd; pegasus_t *pegasus = dev->priv; if (copy_from_user(ðcmd, useraddr, sizeof (ethcmd))) return -EFAULT; switch (ethcmd) { /* get driver-specific version/etc. info */ case ETHTOOL_GDRVINFO:{ struct ethtool_drvinfo info; memset (&info, 0, sizeof (info)); info.cmd = ETHTOOL_GDRVINFO; strncpy(info.driver, driver_name, sizeof (info.driver) - 1); strncpy(info.version, DRIVER_VERSION, sizeof (info.version) - 1); usb_make_path(pegasus->usb, info.bus_info, sizeof (info.bus_info)); if (copy_to_user(useraddr, &info, sizeof (info))) return -EFAULT; return 0; } /* get settings */ case ETHTOOL_GSET:{ struct ethtool_cmd ecmd = { ETHTOOL_GSET }; mii_ethtool_gset(&pegasus->mii, &ecmd); if (copy_to_user(useraddr, &ecmd, sizeof (ecmd))) return -EFAULT; return 0; } /* set settings */ case ETHTOOL_SSET:{ int r; struct ethtool_cmd ecmd; if (copy_from_user(&ecmd, useraddr, sizeof (ecmd))) return -EFAULT; r = mii_ethtool_sset(&pegasus->mii, &ecmd); return r; } /* restart autonegotiation */ case ETHTOOL_NWAY_RST:{ return mii_nway_restart(&pegasus->mii); } /* get link status */ case ETHTOOL_GLINK:{ struct ethtool_value edata = { ETHTOOL_GLINK }; edata.data = mii_link_ok(&pegasus->mii); if (copy_to_user(useraddr, &edata, sizeof (edata))) return -EFAULT; return 0; } /* get message-level */ case ETHTOOL_GMSGLVL:{ struct ethtool_value edata = { ETHTOOL_GMSGLVL }; /* edata.data = pegasus->msg_enable; FIXME */ if (copy_to_user(useraddr, &edata, sizeof (edata))) return -EFAULT; return 0; } /* set message-level */ case ETHTOOL_SMSGLVL:{ struct ethtool_value edata; if (copy_from_user(&edata, useraddr, sizeof (edata))) return -EFAULT; /* sp->msg_enable = edata.data; FIXME */ return 0; } } return -EOPNOTSUPP; }
static int pegasus_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd) { pegasus_t *pegasus = netdev_priv(dev); return mii_ethtool_sset(&pegasus->mii, ecmd); }
static int et_virt_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) { PSEUDO_ADAPTER *pseudo = dev->priv; int rc = mii_ethtool_sset(&pseudo->mii_info, cmd); return rc; }