Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 255629
b: refs/heads/master
c: e97d320
h: refs/heads/master
i:
  255627: 11af0e4
v: v3
  • Loading branch information
Michał Mirosław authored and Jeff Kirsher committed Jun 21, 2011
1 parent 453bfe5 commit 3adf24a
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 74 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9f6ec8d697c08963d83880ccd35c13c5ace716ea
refs/heads/master: e97d3207c5e697e3d86cc67483f9cdcce16cc0bf
69 changes: 0 additions & 69 deletions trunk/drivers/net/e1000/e1000_ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -290,69 +290,6 @@ static int e1000_set_pauseparam(struct net_device *netdev,
return retval;
}

static u32 e1000_get_rx_csum(struct net_device *netdev)
{
struct e1000_adapter *adapter = netdev_priv(netdev);
return adapter->rx_csum;
}

static int e1000_set_rx_csum(struct net_device *netdev, u32 data)
{
struct e1000_adapter *adapter = netdev_priv(netdev);
adapter->rx_csum = data;

if (netif_running(netdev))
e1000_reinit_locked(adapter);
else
e1000_reset(adapter);
return 0;
}

static u32 e1000_get_tx_csum(struct net_device *netdev)
{
return (netdev->features & NETIF_F_HW_CSUM) != 0;
}

static int e1000_set_tx_csum(struct net_device *netdev, u32 data)
{
struct e1000_adapter *adapter = netdev_priv(netdev);
struct e1000_hw *hw = &adapter->hw;

if (hw->mac_type < e1000_82543) {
if (!data)
return -EINVAL;
return 0;
}

if (data)
netdev->features |= NETIF_F_HW_CSUM;
else
netdev->features &= ~NETIF_F_HW_CSUM;

return 0;
}

static int e1000_set_tso(struct net_device *netdev, u32 data)
{
struct e1000_adapter *adapter = netdev_priv(netdev);
struct e1000_hw *hw = &adapter->hw;

if ((hw->mac_type < e1000_82544) ||
(hw->mac_type == e1000_82547))
return data ? -EINVAL : 0;

if (data)
netdev->features |= NETIF_F_TSO;
else
netdev->features &= ~NETIF_F_TSO;

netdev->features &= ~NETIF_F_TSO6;

e_info(probe, "TSO is %s\n", data ? "Enabled" : "Disabled");
adapter->tso_force = true;
return 0;
}

static u32 e1000_get_msglevel(struct net_device *netdev)
{
struct e1000_adapter *adapter = netdev_priv(netdev);
Expand Down Expand Up @@ -1905,12 +1842,6 @@ static const struct ethtool_ops e1000_ethtool_ops = {
.set_ringparam = e1000_set_ringparam,
.get_pauseparam = e1000_get_pauseparam,
.set_pauseparam = e1000_set_pauseparam,
.get_rx_csum = e1000_get_rx_csum,
.set_rx_csum = e1000_set_rx_csum,
.get_tx_csum = e1000_get_tx_csum,
.set_tx_csum = e1000_set_tx_csum,
.set_sg = ethtool_op_set_sg,
.set_tso = e1000_set_tso,
.self_test = e1000_diag_test,
.get_strings = e1000_get_strings,
.set_phys_id = e1000_set_phys_id,
Expand Down
30 changes: 26 additions & 4 deletions trunk/drivers/net/e1000/e1000_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -797,6 +797,24 @@ static int e1000_is_need_ioport(struct pci_dev *pdev)
}
}

static int e1000_set_features(struct net_device *netdev, u32 features)
{
struct e1000_adapter *adapter = netdev_priv(netdev);
u32 changed = features ^ netdev->features;

if (!(changed & NETIF_F_RXCSUM))
return 0;

adapter->rx_csum = !!(features & NETIF_F_RXCSUM);

if (netif_running(netdev))
e1000_reinit_locked(adapter);
else
e1000_reset(adapter);

return 0;
}

static const struct net_device_ops e1000_netdev_ops = {
.ndo_open = e1000_open,
.ndo_stop = e1000_close,
Expand All @@ -815,6 +833,7 @@ static const struct net_device_ops e1000_netdev_ops = {
#ifdef CONFIG_NET_POLL_CONTROLLER
.ndo_poll_controller = e1000_netpoll,
#endif
.ndo_set_features = e1000_set_features,
};

/**
Expand Down Expand Up @@ -1016,16 +1035,19 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
}

if (hw->mac_type >= e1000_82543) {
netdev->features = NETIF_F_SG |
NETIF_F_HW_CSUM |
NETIF_F_HW_VLAN_TX |
netdev->hw_features = NETIF_F_SG |
NETIF_F_HW_CSUM;
netdev->features = NETIF_F_HW_VLAN_TX |
NETIF_F_HW_VLAN_RX |
NETIF_F_HW_VLAN_FILTER;
}

if ((hw->mac_type >= e1000_82544) &&
(hw->mac_type != e1000_82547))
netdev->features |= NETIF_F_TSO;
netdev->hw_features |= NETIF_F_TSO;

netdev->features |= netdev->hw_features;
netdev->hw_features |= NETIF_F_RXCSUM;

if (pci_using_dac) {
netdev->features |= NETIF_F_HIGHDMA;
Expand Down

0 comments on commit 3adf24a

Please sign in to comment.