diff options
author | Michael Ellerman <michael@ellerman.id.au> | 2005-08-31 21:29:12 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-08-31 22:39:43 -0400 |
commit | 48683d72f8146dfb896e05c90d3544bbad63778c (patch) | |
tree | 20154b85d4a5f62d74890b1b5b8568c16475f853 /drivers/net/iseries_veth.c | |
parent | f0c129caa34b4bb0944bbb758b56c3d85b105557 (diff) |
[PATCH] iseries_veth: Remove TX timeout code
The iseries_veth driver uses the generic TX timeout watchdog, however a better
solution is in the works, so remove this code.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/iseries_veth.c')
-rw-r--r-- | drivers/net/iseries_veth.c | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/drivers/net/iseries_veth.c b/drivers/net/iseries_veth.c index 5ce9f9348042..7d6ba5114a1e 100644 --- a/drivers/net/iseries_veth.c +++ b/drivers/net/iseries_veth.c | |||
@@ -830,49 +830,6 @@ static struct ethtool_ops ops = { | |||
830 | .get_link = veth_get_link, | 830 | .get_link = veth_get_link, |
831 | }; | 831 | }; |
832 | 832 | ||
833 | static void veth_tx_timeout(struct net_device *dev) | ||
834 | { | ||
835 | struct veth_port *port = (struct veth_port *)dev->priv; | ||
836 | struct net_device_stats *stats = &port->stats; | ||
837 | unsigned long flags; | ||
838 | int i; | ||
839 | |||
840 | stats->tx_errors++; | ||
841 | |||
842 | spin_lock_irqsave(&port->pending_gate, flags); | ||
843 | |||
844 | if (!port->pending_lpmask) { | ||
845 | spin_unlock_irqrestore(&port->pending_gate, flags); | ||
846 | return; | ||
847 | } | ||
848 | |||
849 | printk(KERN_WARNING "%s: Tx timeout! Resetting lp connections: %08x\n", | ||
850 | dev->name, port->pending_lpmask); | ||
851 | |||
852 | for (i = 0; i < HVMAXARCHITECTEDLPS; i++) { | ||
853 | struct veth_lpar_connection *cnx = veth_cnx[i]; | ||
854 | |||
855 | if (! (port->pending_lpmask & (1<<i))) | ||
856 | continue; | ||
857 | |||
858 | /* If we're pending on it, we must be connected to it, | ||
859 | * so we should certainly have a structure for it. */ | ||
860 | BUG_ON(! cnx); | ||
861 | |||
862 | /* Theoretically we could be kicking a connection | ||
863 | * which doesn't deserve it, but in practice if we've | ||
864 | * had a Tx timeout, the pending_lpmask will have | ||
865 | * exactly one bit set - the connection causing the | ||
866 | * problem. */ | ||
867 | spin_lock(&cnx->lock); | ||
868 | cnx->state |= VETH_STATE_RESET; | ||
869 | veth_kick_statemachine(cnx); | ||
870 | spin_unlock(&cnx->lock); | ||
871 | } | ||
872 | |||
873 | spin_unlock_irqrestore(&port->pending_gate, flags); | ||
874 | } | ||
875 | |||
876 | static struct net_device * __init veth_probe_one(int vlan, struct device *vdev) | 833 | static struct net_device * __init veth_probe_one(int vlan, struct device *vdev) |
877 | { | 834 | { |
878 | struct net_device *dev; | 835 | struct net_device *dev; |
@@ -921,9 +878,6 @@ static struct net_device * __init veth_probe_one(int vlan, struct device *vdev) | |||
921 | dev->set_multicast_list = veth_set_multicast_list; | 878 | dev->set_multicast_list = veth_set_multicast_list; |
922 | SET_ETHTOOL_OPS(dev, &ops); | 879 | SET_ETHTOOL_OPS(dev, &ops); |
923 | 880 | ||
924 | dev->watchdog_timeo = 2 * (VETH_ACKTIMEOUT * HZ / 1000000); | ||
925 | dev->tx_timeout = veth_tx_timeout; | ||
926 | |||
927 | SET_NETDEV_DEV(dev, vdev); | 881 | SET_NETDEV_DEV(dev, vdev); |
928 | 882 | ||
929 | rc = register_netdev(dev); | 883 | rc = register_netdev(dev); |
@@ -1058,8 +1012,6 @@ static int veth_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1058 | 1012 | ||
1059 | lpmask = veth_transmit_to_many(skb, lpmask, dev); | 1013 | lpmask = veth_transmit_to_many(skb, lpmask, dev); |
1060 | 1014 | ||
1061 | dev->trans_start = jiffies; | ||
1062 | |||
1063 | if (! lpmask) { | 1015 | if (! lpmask) { |
1064 | dev_kfree_skb(skb); | 1016 | dev_kfree_skb(skb); |
1065 | } else { | 1017 | } else { |