Commit 6c05d252 authored by Francois Romieu's avatar Francois Romieu
Browse files

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: default avatarFrancois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
parent 934714d0
...@@ -680,7 +680,6 @@ struct rtl8169_private { ...@@ -680,7 +680,6 @@ struct rtl8169_private {
struct pci_dev *pci_dev; struct pci_dev *pci_dev;
struct net_device *dev; struct net_device *dev;
struct napi_struct napi; struct napi_struct napi;
spinlock_t lock;
u32 msg_enable; u32 msg_enable;
u16 txd_version; u16 txd_version;
u16 mac_version; u16 mac_version;
...@@ -1723,9 +1722,7 @@ static void rtl8169_get_regs(struct net_device *dev, struct ethtool_regs *regs, ...@@ -1723,9 +1722,7 @@ static void rtl8169_get_regs(struct net_device *dev, struct ethtool_regs *regs,
regs->len = R8169_REGS_SIZE; regs->len = R8169_REGS_SIZE;
rtl_lock_work(tp); rtl_lock_work(tp);
spin_lock_bh(&tp->lock);
memcpy_fromio(p, tp->mmio_addr, regs->len); memcpy_fromio(p, tp->mmio_addr, regs->len);
spin_unlock_bh(&tp->lock);
rtl_unlock_work(tp); rtl_unlock_work(tp);
} }
...@@ -4151,7 +4148,6 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -4151,7 +4148,6 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
tp->do_ioctl = rtl_xmii_ioctl; tp->do_ioctl = rtl_xmii_ioctl;
} }
spin_lock_init(&tp->lock);
mutex_init(&tp->wk.mutex); mutex_init(&tp->wk.mutex);
/* Get MAC address */ /* Get MAC address */
...@@ -6031,8 +6027,6 @@ static void rtl_set_rx_mode(struct net_device *dev) ...@@ -6031,8 +6027,6 @@ static void rtl_set_rx_mode(struct net_device *dev)
} }
} }
spin_lock_bh(&tp->lock);
tmp = (RTL_R32(RxConfig) & ~RX_CONFIG_ACCEPT_MASK) | rx_mode; tmp = (RTL_R32(RxConfig) & ~RX_CONFIG_ACCEPT_MASK) | rx_mode;
if (tp->mac_version > RTL_GIGA_MAC_VER_06) { if (tp->mac_version > RTL_GIGA_MAC_VER_06) {
...@@ -6046,8 +6040,6 @@ static void rtl_set_rx_mode(struct net_device *dev) ...@@ -6046,8 +6040,6 @@ static void rtl_set_rx_mode(struct net_device *dev)
RTL_W32(MAR0 + 0, mc_filter[0]); RTL_W32(MAR0 + 0, mc_filter[0]);
RTL_W32(RxConfig, tmp); RTL_W32(RxConfig, tmp);
spin_unlock_bh(&tp->lock);
} }
/** /**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment