aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/iseries_veth.c48
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
833static 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
876static struct net_device * __init veth_probe_one(int vlan, struct device *vdev) 833static 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 {