From 01bd609f117dad4cc8b309222f4eaa08b3d53e3c Mon Sep 17 00:00:00 2001
From: Gabor Juhos <juhosg@openwrt.org>
Date: Thu, 17 Sep 2009 08:43:14 +0000
Subject: [PATCH] adm5120: use netdev_ops on kernels >= 2.6.30 (based on a
 patch by Alexandros C. Couloumbis, closes #5846)

SVN-Revision: 17601
---
 .../810-adm5120sw-netdev_ops.patch            | 52 +++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 target/linux/adm5120/patches-2.6.30/810-adm5120sw-netdev_ops.patch

diff --git a/target/linux/adm5120/patches-2.6.30/810-adm5120sw-netdev_ops.patch b/target/linux/adm5120/patches-2.6.30/810-adm5120sw-netdev_ops.patch
new file mode 100644
index 0000000000..ae116509cb
--- /dev/null
+++ b/target/linux/adm5120/patches-2.6.30/810-adm5120sw-netdev_ops.patch
@@ -0,0 +1,52 @@
+--- a/drivers/net/adm5120sw.c
++++ b/drivers/net/adm5120sw.c
+@@ -973,9 +973,12 @@ static void adm5120_if_set_multicast_lis
+ 
+ static int adm5120_if_set_mac_address(struct net_device *dev, void *p)
+ {
+-	struct sockaddr *addr = p;
++	int ret;
++
++	ret = eth_mac_addr(dev, p);
++	if (ret)
++		return ret;
+ 
+-	memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
+ 	adm5120_write_mac(dev);
+ 	return 0;
+ }
+@@ -1017,6 +1020,18 @@ static int adm5120_if_do_ioctl(struct ne
+ 	return 0;
+ }
+ 
++static const struct net_device_ops adm5120sw_netdev_ops = {
++        .ndo_open               = adm5120_if_open,
++        .ndo_stop               = adm5120_if_stop,
++        .ndo_start_xmit         = adm5120_if_hard_start_xmit,
++        .ndo_set_multicast_list = adm5120_if_set_multicast_list,
++        .ndo_do_ioctl           = adm5120_if_do_ioctl,
++        .ndo_tx_timeout         = adm5120_if_tx_timeout,
++        .ndo_validate_addr      = eth_validate_addr,
++        .ndo_change_mtu         = eth_change_mtu,
++	.ndo_set_mac_address    = adm5120_if_set_mac_address,
++};
++
+ static struct net_device *adm5120_if_alloc(void)
+ {
+ 	struct net_device *dev;
+@@ -1030,14 +1045,8 @@ static struct net_device *adm5120_if_all
+ 	priv->dev = dev;
+ 
+ 	dev->irq		= ADM5120_IRQ_SWITCH;
+-	dev->open		= adm5120_if_open;
+-	dev->hard_start_xmit 	= adm5120_if_hard_start_xmit;
+-	dev->stop		= adm5120_if_stop;
+-	dev->set_multicast_list	= adm5120_if_set_multicast_list;
+-	dev->do_ioctl		= adm5120_if_do_ioctl;
+-	dev->tx_timeout		= adm5120_if_tx_timeout;
++	dev->netdev_ops		= &adm5120sw_netdev_ops;
+ 	dev->watchdog_timeo 	= TX_TIMEOUT;
+-	dev->set_mac_address 	= adm5120_if_set_mac_address;
+ 
+ #ifdef CONFIG_ADM5120_SWITCH_NAPI
+ 	netif_napi_add(dev, &priv->napi, adm5120_if_poll, 64);
-- 
GitLab