diff options
author | Francois Romieu | 2011-07-19 17:21:29 +0200 |
---|---|---|
committer | Francois Romieu | 2011-07-19 17:28:03 +0200 |
commit | 1687b56679880a47164ae149530abee543f9d6b1 (patch) | |
tree | 741efafc792fc1e723aace3d50f44917b20fafca | |
parent | 81fc70d86527a1450560709500ca5f52e661da1f (diff) |
r8169: fix sticky accepts packet bits in RxConfig.
e542a2269f232d61270ceddd42b73a4348dee2bb (r8169: adjust the RxConfig settings)
broke the return from promiscuous mode to physical address match mode.
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Signed-off-by: Hayes Wang <hayeswang@realtek.com>
-rw-r--r-- | drivers/net/r8169.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index 3ddd33936aa7..40bcb82d9116 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c @@ -435,6 +435,7 @@ enum rtl_register_content { AcceptMulticast = 0x04, AcceptMyPhys = 0x02, AcceptAllPhys = 0x01, +#define RX_CONFIG_ACCEPT_MASK 0x3f /* TxConfigBits */ TxInterFrameGapShift = 24, @@ -3943,11 +3944,8 @@ err_pm_runtime_put: static void rtl_rx_close(struct rtl8169_private *tp) { void __iomem *ioaddr = tp->mmio_addr; - u32 rxcfg = RTL_R32(RxConfig); - rxcfg &= ~(AcceptErr | AcceptRunt | AcceptBroadcast | AcceptMulticast | - AcceptMyPhys | AcceptAllPhys); - RTL_W32(RxConfig, rxcfg); + RTL_W32(RxConfig, RTL_R32(RxConfig) & ~RX_CONFIG_ACCEPT_MASK); } static void rtl8169_hw_reset(struct rtl8169_private *tp) @@ -5586,7 +5584,7 @@ static void rtl_set_rx_mode(struct net_device *dev) spin_lock_irqsave(&tp->lock, flags); - tmp = RTL_R32(RxConfig) | rx_mode; + tmp = (RTL_R32(RxConfig) & ~RX_CONFIG_ACCEPT_MASK) | rx_mode; if (tp->mac_version > RTL_GIGA_MAC_VER_06) { u32 data = mc_filter[0]; |