Disable the station MAC address entry in the perfect address filter
table before updating the table entry with a new MAC address.

Signed-off-by: John Efstathiades <john.efstathia...@pebblebay.com>
---
 drivers/net/usb/lan78xx.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
index 776d84d2b513..d2fcc3c5eff2 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -2493,9 +2493,12 @@ static int lan78xx_set_mac_addr(struct net_device 
*netdev, void *p)
        lan78xx_write_reg(dev, RX_ADDRL, addr_lo);
        lan78xx_write_reg(dev, RX_ADDRH, addr_hi);
 
-       /* Added to support MAC address changes */
-       lan78xx_write_reg(dev, MAF_LO(0), addr_lo);
-       lan78xx_write_reg(dev, MAF_HI(0), addr_hi | MAF_HI_VALID_);
+       /* The station MAC address in the perfect address filter table
+        * must also be updated to ensure frames are received
+        */
+       ret = lan78xx_write_reg(dev, MAF_HI(0), 0);
+       ret = lan78xx_write_reg(dev, MAF_LO(0), addr_lo);
+       ret = lan78xx_write_reg(dev, MAF_HI(0), addr_hi | MAF_HI_VALID_);
 
        return 0;
 }
-- 
2.17.1

Reply via email to