mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-21 14:37:57 +00:00
01bd609f11
SVN-Revision: 17601
53 lines
1.7 KiB
Diff
53 lines
1.7 KiB
Diff
--- 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);
|