Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 753dcfee authored by Peter Korsgaard's avatar Peter Korsgaard Committed by Jeff Garzik
Browse files

dm9601: runtime mac address change support



Implement set_mac_address for runtime mac address change.

Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent 07b5f6a6
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -396,6 +396,20 @@ static void dm9601_set_multicast(struct net_device *net)
	dm_write_reg_async(dev, DM_RX_CTRL, rx_ctl);
}

static int dm9601_set_mac_address(struct net_device *net, void *p)
{
	struct sockaddr *addr = p;
	struct usbnet *dev = netdev_priv(net);

	if (!is_valid_ether_addr(addr->sa_data))
		return -EINVAL;

	memcpy(net->dev_addr, addr->sa_data, net->addr_len);
	dm_write_async(dev, DM_PHY_ADDR, net->addr_len, net->dev_addr);

	return 0;
}

static int dm9601_bind(struct usbnet *dev, struct usb_interface *intf)
{
	int ret;
@@ -406,6 +420,7 @@ static int dm9601_bind(struct usbnet *dev, struct usb_interface *intf)

	dev->net->do_ioctl = dm9601_ioctl;
	dev->net->set_multicast_list = dm9601_set_multicast;
	dev->net->set_mac_address = dm9601_set_mac_address;
	dev->net->ethtool_ops = &dm9601_ethtool_ops;
	dev->net->hard_header_len += DM_TX_OVERHEAD;
	dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;