From 42738aa9ad5e342f043c5d557b070770cad5fd65 Mon Sep 17 00:00:00 2001
From: "Alexandros C. Couloumbis" <alex@ozo.com>
Date: Fri, 30 Jul 2010 09:59:13 +0000
Subject: [PATCH] add missing bits & bytes from r22412

SVN-Revision: 22416
---
 .../patches-2.6.32/110-ar2313_ethernet.patch       | 14 +++++++++++++-
 .../patches-2.6.33/110-ar2313_ethernet.patch       | 14 +++++++++++++-
 .../patches-2.6.34/110-ar2313_ethernet.patch       | 14 +++++++++++++-
 .../patches-2.6.35/110-ar2313_ethernet.patch       | 14 +++++++++++++-
 4 files changed, 52 insertions(+), 4 deletions(-)

diff --git a/target/linux/atheros/patches-2.6.32/110-ar2313_ethernet.patch b/target/linux/atheros/patches-2.6.32/110-ar2313_ethernet.patch
index 7e6bc91a24..22fadd05fd 100644
--- a/target/linux/atheros/patches-2.6.32/110-ar2313_ethernet.patch
+++ b/target/linux/atheros/patches-2.6.32/110-ar2313_ethernet.patch
@@ -25,7 +25,7 @@
  obj-$(CONFIG_DECLANCE) += declance.o
 --- /dev/null
 +++ b/drivers/net/ar231x.c
-@@ -0,0 +1,1266 @@
+@@ -0,0 +1,1278 @@
 +/*
 + * ar231x.c: Linux driver for the Atheros AR231x Ethernet device.
 + *
@@ -170,6 +170,7 @@
 +static void rx_tasklet_func(unsigned long data);
 +static void rx_tasklet_cleanup(struct net_device *dev);
 +static void ar231x_multicast_list(struct net_device *dev);
++static void ar231x_tx_timeout(struct net_device *dev);
 +
 +static int ar231x_mdiobus_read(struct mii_bus *bus, int phy_addr, int regnum);
 +static int ar231x_mdiobus_write(struct mii_bus *bus, int phy_addr, int regnum, u16 value);
@@ -190,6 +191,7 @@
 +	.ndo_change_mtu 	= eth_change_mtu,
 +	.ndo_validate_addr	= eth_validate_addr,
 +	.ndo_set_mac_address 	= eth_mac_addr,
++	.ndo_tx_timeout		= ar231x_tx_timeout,
 +};
 +
 +int __init ar231x_probe(struct platform_device *pdev)
@@ -1039,6 +1041,16 @@
 +	return 0;
 +}
 +
++static void ar231x_tx_timeout(struct net_device *dev)
++{
++	struct ar231x_private *sp = netdev_priv(dev);
++	unsigned long flags;
++
++	spin_lock_irqsave(&sp->lock, flags);
++	ar231x_restart(dev);
++	spin_unlock_irqrestore(&sp->lock, flags);
++}
++
 +static void ar231x_halt(struct net_device *dev)
 +{
 +	struct ar231x_private *sp = netdev_priv(dev);
diff --git a/target/linux/atheros/patches-2.6.33/110-ar2313_ethernet.patch b/target/linux/atheros/patches-2.6.33/110-ar2313_ethernet.patch
index 0f1f2e35bb..9732bc04f7 100644
--- a/target/linux/atheros/patches-2.6.33/110-ar2313_ethernet.patch
+++ b/target/linux/atheros/patches-2.6.33/110-ar2313_ethernet.patch
@@ -25,7 +25,7 @@
  obj-$(CONFIG_DECLANCE) += declance.o
 --- /dev/null
 +++ b/drivers/net/ar231x.c
-@@ -0,0 +1,1266 @@
+@@ -0,0 +1,1278 @@
 +/*
 + * ar231x.c: Linux driver for the Atheros AR231x Ethernet device.
 + *
@@ -170,6 +170,7 @@
 +static void rx_tasklet_func(unsigned long data);
 +static void rx_tasklet_cleanup(struct net_device *dev);
 +static void ar231x_multicast_list(struct net_device *dev);
++static void ar231x_tx_timeout(struct net_device *dev);
 +
 +static int ar231x_mdiobus_read(struct mii_bus *bus, int phy_addr, int regnum);
 +static int ar231x_mdiobus_write(struct mii_bus *bus, int phy_addr, int regnum, u16 value);
@@ -190,6 +191,7 @@
 +	.ndo_change_mtu 	= eth_change_mtu,
 +	.ndo_validate_addr	= eth_validate_addr,
 +	.ndo_set_mac_address 	= eth_mac_addr,
++	.ndo_tx_timeout		= ar231x_tx_timeout,
 +};
 +
 +int __init ar231x_probe(struct platform_device *pdev)
@@ -1039,6 +1041,16 @@
 +	return 0;
 +}
 +
++static void ar231x_tx_timeout(struct net_device *dev)
++{
++	struct ar231x_private *sp = netdev_priv(dev);
++	unsigned long flags;
++
++	spin_lock_irqsave(&sp->lock, flags);
++	ar231x_restart(dev);
++	spin_unlock_irqrestore(&sp->lock, flags);
++}
++
 +static void ar231x_halt(struct net_device *dev)
 +{
 +	struct ar231x_private *sp = netdev_priv(dev);
diff --git a/target/linux/atheros/patches-2.6.34/110-ar2313_ethernet.patch b/target/linux/atheros/patches-2.6.34/110-ar2313_ethernet.patch
index 7db1d992b1..2dfef958f9 100644
--- a/target/linux/atheros/patches-2.6.34/110-ar2313_ethernet.patch
+++ b/target/linux/atheros/patches-2.6.34/110-ar2313_ethernet.patch
@@ -25,7 +25,7 @@
  obj-$(CONFIG_DECLANCE) += declance.o
 --- /dev/null
 +++ b/drivers/net/ar231x.c
-@@ -0,0 +1,1266 @@
+@@ -0,0 +1,1278 @@
 +/*
 + * ar231x.c: Linux driver for the Atheros AR231x Ethernet device.
 + *
@@ -170,6 +170,7 @@
 +static void rx_tasklet_func(unsigned long data);
 +static void rx_tasklet_cleanup(struct net_device *dev);
 +static void ar231x_multicast_list(struct net_device *dev);
++static void ar231x_tx_timeout(struct net_device *dev);
 +
 +static int ar231x_mdiobus_read(struct mii_bus *bus, int phy_addr, int regnum);
 +static int ar231x_mdiobus_write(struct mii_bus *bus, int phy_addr, int regnum, u16 value);
@@ -190,6 +191,7 @@
 +	.ndo_change_mtu 	= eth_change_mtu,
 +	.ndo_validate_addr	= eth_validate_addr,
 +	.ndo_set_mac_address 	= eth_mac_addr,
++	.ndo_tx_timeout		= ar231x_tx_timeout,
 +};
 +
 +int __init ar231x_probe(struct platform_device *pdev)
@@ -1039,6 +1041,16 @@
 +	return 0;
 +}
 +
++static void ar231x_tx_timeout(struct net_device *dev)
++{
++	struct ar231x_private *sp = netdev_priv(dev);
++	unsigned long flags;
++
++	spin_lock_irqsave(&sp->lock, flags);
++	ar231x_restart(dev);
++	spin_unlock_irqrestore(&sp->lock, flags);
++}
++
 +static void ar231x_halt(struct net_device *dev)
 +{
 +	struct ar231x_private *sp = netdev_priv(dev);
diff --git a/target/linux/atheros/patches-2.6.35/110-ar2313_ethernet.patch b/target/linux/atheros/patches-2.6.35/110-ar2313_ethernet.patch
index 58bcdd36a4..ddd3eb1d39 100644
--- a/target/linux/atheros/patches-2.6.35/110-ar2313_ethernet.patch
+++ b/target/linux/atheros/patches-2.6.35/110-ar2313_ethernet.patch
@@ -25,7 +25,7 @@
  obj-$(CONFIG_DECLANCE) += declance.o
 --- /dev/null
 +++ b/drivers/net/ar231x.c
-@@ -0,0 +1,1266 @@
+@@ -0,0 +1,1278 @@
 +/*
 + * ar231x.c: Linux driver for the Atheros AR231x Ethernet device.
 + *
@@ -170,6 +170,7 @@
 +static void rx_tasklet_func(unsigned long data);
 +static void rx_tasklet_cleanup(struct net_device *dev);
 +static void ar231x_multicast_list(struct net_device *dev);
++static void ar231x_tx_timeout(struct net_device *dev);
 +
 +static int ar231x_mdiobus_read(struct mii_bus *bus, int phy_addr, int regnum);
 +static int ar231x_mdiobus_write(struct mii_bus *bus, int phy_addr, int regnum, u16 value);
@@ -190,6 +191,7 @@
 +	.ndo_change_mtu 	= eth_change_mtu,
 +	.ndo_validate_addr	= eth_validate_addr,
 +	.ndo_set_mac_address 	= eth_mac_addr,
++	.ndo_tx_timeout		= ar231x_tx_timeout,
 +};
 +
 +int __init ar231x_probe(struct platform_device *pdev)
@@ -1039,6 +1041,16 @@
 +	return 0;
 +}
 +
++static void ar231x_tx_timeout(struct net_device *dev)
++{
++	struct ar231x_private *sp = netdev_priv(dev);
++	unsigned long flags;
++
++	spin_lock_irqsave(&sp->lock, flags);
++	ar231x_restart(dev);
++	spin_unlock_irqrestore(&sp->lock, flags);
++}
++
 +static void ar231x_halt(struct net_device *dev)
 +{
 +	struct ar231x_private *sp = netdev_priv(dev);
-- 
GitLab