static int ixgb_set_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *pause) { struct ixgb_adapter *adapter = netdev_priv(netdev); struct ixgb_hw *hw = &adapter->hw; if (pause->autoneg == AUTONEG_ENABLE) return -EINVAL; if (pause->rx_pause && pause->tx_pause) hw->fc.type = ixgb_fc_full; else if (pause->rx_pause && !pause->tx_pause) hw->fc.type = ixgb_fc_rx_pause; else if (!pause->rx_pause && pause->tx_pause) hw->fc.type = ixgb_fc_tx_pause; else if (!pause->rx_pause && !pause->tx_pause) hw->fc.type = ixgb_fc_none; if (netif_running(adapter->netdev)) { ixgb_down(adapter, true); ixgb_up(adapter); ixgb_set_speed_duplex(netdev); } else ixgb_reset(adapter); return 0; }
static int ixgb_set_settings(struct net_device *netdev, struct ethtool_cmd *ecmd) { struct ixgb_adapter *adapter = netdev->priv; if(ecmd->autoneg == AUTONEG_ENABLE || ecmd->speed + ecmd->duplex != SPEED_10000 + DUPLEX_FULL) return -EINVAL; if(netif_running(adapter->netdev)) { ixgb_down(adapter, TRUE); ixgb_reset(adapter); ixgb_up(adapter); } else ixgb_reset(adapter); return 0; }
static int ixgb_set_link_ksettings(struct net_device *netdev, const struct ethtool_link_ksettings *cmd) { struct ixgb_adapter *adapter = netdev_priv(netdev); u32 speed = cmd->base.speed; if (cmd->base.autoneg == AUTONEG_ENABLE || (speed + cmd->base.duplex != SPEED_10000 + DUPLEX_FULL)) return -EINVAL; if (netif_running(adapter->netdev)) { ixgb_down(adapter, true); ixgb_reset(adapter); ixgb_up(adapter); ixgb_set_speed_duplex(netdev); } else ixgb_reset(adapter); return 0; }
static int ixgb_set_rx_csum(struct net_device *netdev, uint32_t data) { struct ixgb_adapter *adapter = netdev->priv; adapter->rx_csum = data; if(netif_running(netdev)) { ixgb_down(adapter,TRUE); ixgb_up(adapter); } else ixgb_reset(adapter); return 0; }
static int ixgb_set_rx_csum(struct net_device *netdev, u32 data) { struct ixgb_adapter *adapter = netdev_priv(netdev); adapter->rx_csum = data; if(netif_running(netdev)) { ixgb_down(adapter, true); ixgb_up(adapter); ixgb_set_speed_duplex(netdev); } else ixgb_reset(adapter); return 0; }