diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2009-09-17 08:43:14 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2009-09-17 08:43:14 +0000 |
commit | 01bd609f117dad4cc8b309222f4eaa08b3d53e3c (patch) | |
tree | e2c5fe101dae3b0f7f80c170c467ae1db7db1243 /target/linux/adm5120 | |
parent | 072ebb84e1aea77af57a75ce6ce525a7ec76fd5a (diff) | |
download | upstream-01bd609f117dad4cc8b309222f4eaa08b3d53e3c.tar.gz upstream-01bd609f117dad4cc8b309222f4eaa08b3d53e3c.tar.bz2 upstream-01bd609f117dad4cc8b309222f4eaa08b3d53e3c.zip |
adm5120: use netdev_ops on kernels >= 2.6.30 (based on a patch by Alexandros C. Couloumbis, closes #5846)
SVN-Revision: 17601
Diffstat (limited to 'target/linux/adm5120')
-rw-r--r-- | target/linux/adm5120/patches-2.6.30/810-adm5120sw-netdev_ops.patch | 52 |
1 files changed, 52 insertions, 0 deletions
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); |