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

Commit 209ad53b authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Revert "r8169: mac address change support"

This reverts commit a2b98a69.

As per Guennadi Liakhovetski, the mac address change support code breaks
some normal uses (_without_ any address changes), and until it's all
sorted out, we're better off without it.

Says Francois:

  "Go revert it.

   Despite what I claimed, I can not find a third-party confirmation by
   email that it works elsewhere.

   It would probably be enough to remove the call to
   __rtl8169_set_mac_addr() in rtl8169_hw_start() though."

See also

	http://bugzilla.kernel.org/show_bug.cgi?id=6032



Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Acked-by: default avatarFrancois Romieu <romieu@fr.zoreil.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 9ca0e547
Loading
Loading
Loading
Loading
+0 −38
Original line number Diff line number Diff line
@@ -1397,41 +1397,6 @@ static void rtl8169_netpoll(struct net_device *dev)
}
#endif

static void __rtl8169_set_mac_addr(struct net_device *dev, void __iomem *ioaddr)
{
	unsigned int i, j;

	RTL_W8(Cfg9346, Cfg9346_Unlock);
	for (i = 0; i < 2; i++) {
		__le32 l = 0;

		for (j = 0; j < 4; j++) {
			l <<= 8;
			l |= dev->dev_addr[4*i + j];
		}
		RTL_W32(MAC0 + 4*i, cpu_to_be32(l));
	}
	RTL_W8(Cfg9346, Cfg9346_Lock);
}

static int rtl8169_set_mac_addr(struct net_device *dev, void *p)
{
	struct rtl8169_private *tp = netdev_priv(dev);
	struct sockaddr *addr = p;

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

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

	if (netif_running(dev)) {
		spin_lock_irq(&tp->lock);
		__rtl8169_set_mac_addr(dev, tp->mmio_addr);
		spin_unlock_irq(&tp->lock);
	}
	return 0;
}

static void rtl8169_release_board(struct pci_dev *pdev, struct net_device *dev,
				  void __iomem *ioaddr)
{
@@ -1681,7 +1646,6 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
	dev->stop = rtl8169_close;
	dev->tx_timeout = rtl8169_tx_timeout;
	dev->set_multicast_list = rtl8169_set_rx_mode;
	dev->set_mac_address = rtl8169_set_mac_addr;
	dev->watchdog_timeo = RTL8169_TX_TIMEOUT;
	dev->irq = pdev->irq;
	dev->base_addr = (unsigned long) ioaddr;
@@ -1929,8 +1893,6 @@ rtl8169_hw_start(struct net_device *dev)
	/* Enable all known interrupts by setting the interrupt mask. */
	RTL_W16(IntrMask, rtl8169_intr_mask);

	__rtl8169_set_mac_addr(dev, ioaddr);

	netif_start_queue(dev);
}