diff options
author | Francois Romieu <romieu@fr.zoreil.com> | 2012-01-31 05:20:34 -0500 |
---|---|---|
committer | Francois Romieu <romieu@fr.zoreil.com> | 2012-01-31 08:32:45 -0500 |
commit | 6c05d25267ebb371c4311de6904f740342e82f7c (patch) | |
tree | 5bda6183c1b7dcbe28f67aec3c54112c4f02e976 | |
parent | 934714d088f35b81edafdce89397969baf77fb8a (diff) |
r8169: spinlock redux.
rtl8169_get_regs operates under RTNL and rtl task mutex whereas
rtl_set_rx_mode is either called under RTNL or rtl task mutex protection.
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
-rw-r--r-- | drivers/net/ethernet/realtek/r8169.c | 8 |
1 files changed, 0 insertions, 8 deletions
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c index 0377ffaa8bee..707742207c75 100644 --- a/drivers/net/ethernet/realtek/r8169.c +++ b/drivers/net/ethernet/realtek/r8169.c | |||
@@ -680,7 +680,6 @@ struct rtl8169_private { | |||
680 | struct pci_dev *pci_dev; | 680 | struct pci_dev *pci_dev; |
681 | struct net_device *dev; | 681 | struct net_device *dev; |
682 | struct napi_struct napi; | 682 | struct napi_struct napi; |
683 | spinlock_t lock; | ||
684 | u32 msg_enable; | 683 | u32 msg_enable; |
685 | u16 txd_version; | 684 | u16 txd_version; |
686 | u16 mac_version; | 685 | u16 mac_version; |
@@ -1723,9 +1722,7 @@ static void rtl8169_get_regs(struct net_device *dev, struct ethtool_regs *regs, | |||
1723 | regs->len = R8169_REGS_SIZE; | 1722 | regs->len = R8169_REGS_SIZE; |
1724 | 1723 | ||
1725 | rtl_lock_work(tp); | 1724 | rtl_lock_work(tp); |
1726 | spin_lock_bh(&tp->lock); | ||
1727 | memcpy_fromio(p, tp->mmio_addr, regs->len); | 1725 | memcpy_fromio(p, tp->mmio_addr, regs->len); |
1728 | spin_unlock_bh(&tp->lock); | ||
1729 | rtl_unlock_work(tp); | 1726 | rtl_unlock_work(tp); |
1730 | } | 1727 | } |
1731 | 1728 | ||
@@ -4151,7 +4148,6 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
4151 | tp->do_ioctl = rtl_xmii_ioctl; | 4148 | tp->do_ioctl = rtl_xmii_ioctl; |
4152 | } | 4149 | } |
4153 | 4150 | ||
4154 | spin_lock_init(&tp->lock); | ||
4155 | mutex_init(&tp->wk.mutex); | 4151 | mutex_init(&tp->wk.mutex); |
4156 | 4152 | ||
4157 | /* Get MAC address */ | 4153 | /* Get MAC address */ |
@@ -6031,8 +6027,6 @@ static void rtl_set_rx_mode(struct net_device *dev) | |||
6031 | } | 6027 | } |
6032 | } | 6028 | } |
6033 | 6029 | ||
6034 | spin_lock_bh(&tp->lock); | ||
6035 | |||
6036 | tmp = (RTL_R32(RxConfig) & ~RX_CONFIG_ACCEPT_MASK) | rx_mode; | 6030 | tmp = (RTL_R32(RxConfig) & ~RX_CONFIG_ACCEPT_MASK) | rx_mode; |
6037 | 6031 | ||
6038 | if (tp->mac_version > RTL_GIGA_MAC_VER_06) { | 6032 | if (tp->mac_version > RTL_GIGA_MAC_VER_06) { |
@@ -6046,8 +6040,6 @@ static void rtl_set_rx_mode(struct net_device *dev) | |||
6046 | RTL_W32(MAR0 + 0, mc_filter[0]); | 6040 | RTL_W32(MAR0 + 0, mc_filter[0]); |
6047 | 6041 | ||
6048 | RTL_W32(RxConfig, tmp); | 6042 | RTL_W32(RxConfig, tmp); |
6049 | |||
6050 | spin_unlock_bh(&tp->lock); | ||
6051 | } | 6043 | } |
6052 | 6044 | ||
6053 | /** | 6045 | /** |