コード例 #1
0
ファイル: ixgb_ethtool.c プロジェクト: ReneNyffenegger/linux
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;
}
コード例 #2
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;
}
コード例 #3
0
ファイル: ixgb_ethtool.c プロジェクト: ReneNyffenegger/linux
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;
}
コード例 #4
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;
}
コード例 #5
0
ファイル: ixgb_ethtool.c プロジェクト: 274914765/C
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;
}