Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

bgmac: fix "cmdcfg" calls for promisc and loopback modes

The last (bool) parameter in bgmac_cmdcfg_maskset says if the write
should be made, even if value didn't change. Currently driver doesn't
match the specs about (not) forcing some changes. This makes it follow
them.

Reported-by: Nathan Hintz <nlhintz@hotmail.com>
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Rafał Miłecki and committed by
David S. Miller
e9ba1039 d166f218

+4 -4
+4 -4
drivers/net/ethernet/broadcom/bgmac.c
··· 776 776 struct bgmac *bgmac = netdev_priv(net_dev); 777 777 778 778 if (net_dev->flags & IFF_PROMISC) 779 - bgmac_cmdcfg_maskset(bgmac, ~0, BGMAC_CMDCFG_PROM, false); 779 + bgmac_cmdcfg_maskset(bgmac, ~0, BGMAC_CMDCFG_PROM, true); 780 780 else 781 - bgmac_cmdcfg_maskset(bgmac, ~BGMAC_CMDCFG_PROM, 0, false); 781 + bgmac_cmdcfg_maskset(bgmac, ~BGMAC_CMDCFG_PROM, 0, true); 782 782 } 783 783 784 784 #if 0 /* We don't use that regs yet */ ··· 1039 1039 bgmac_write_mac_address(bgmac, bgmac->net_dev->dev_addr); 1040 1040 1041 1041 if (bgmac->loopback) 1042 - bgmac_cmdcfg_maskset(bgmac, ~0, BGMAC_CMDCFG_ML, true); 1042 + bgmac_cmdcfg_maskset(bgmac, ~0, BGMAC_CMDCFG_ML, false); 1043 1043 else 1044 - bgmac_cmdcfg_maskset(bgmac, ~BGMAC_CMDCFG_ML, 0, true); 1044 + bgmac_cmdcfg_maskset(bgmac, ~BGMAC_CMDCFG_ML, 0, false); 1045 1045 1046 1046 bgmac_write(bgmac, BGMAC_RXMAX_LENGTH, 32 + ETHER_MAX_LEN); 1047 1047