Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 15672
b: refs/heads/master
c: 38b492a
h: refs/heads/master
v: v3
  • Loading branch information
Jeff Garzik committed Nov 5, 2005
1 parent 29d6f01 commit ca58a23
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 17 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a15e0384dd22ee08f56d62761ce9d770488f6f4e
refs/heads/master: 38b492a21ac1b0f0a5ebed69c9e2ee6f4202f574
25 changes: 9 additions & 16 deletions trunk/drivers/net/8139too.c
Original file line number Diff line number Diff line change
Expand Up @@ -586,15 +586,15 @@ struct rtl8139_private {
dma_addr_t tx_bufs_dma;
signed char phys[4]; /* MII device addresses. */
char twistie, twist_row, twist_col; /* Twister tune state. */
unsigned int default_port:4; /* Last dev->if_port value. */
unsigned int default_port : 4; /* Last dev->if_port value. */
unsigned int have_thread : 1;
spinlock_t lock;
spinlock_t rx_lock;
chip_t chipset;
u32 rx_config;
struct rtl_extra_stats xstats;

struct work_struct thread;
long time_to_die; /* -1 no thr, 0 thr active, 1 thr cancel */

struct mii_if_info mii;
unsigned int regs_len;
Expand Down Expand Up @@ -1599,40 +1599,33 @@ static void rtl8139_thread (void *_data)
struct net_device *dev = _data;
struct rtl8139_private *tp = netdev_priv(dev);

if ((tp->time_to_die == 0) &&
(rtnl_lock_interruptible() == 0)) {
if (rtnl_lock_interruptible() == 0) {
rtl8139_thread_iter (dev, tp, tp->mmio_addr);
rtnl_unlock ();
}

if (tp->time_to_die == 0)
schedule_delayed_work(&tp->thread, next_tick);
schedule_delayed_work(&tp->thread, next_tick);
}

static void rtl8139_start_thread(struct rtl8139_private *tp)
{
tp->twistie = 0;
tp->time_to_die = -1;
if (tp->chipset == CH_8139_K)
tp->twistie = 1;
else if (tp->drv_flags & HAS_LNK_CHNG)
return;

tp->time_to_die = 0;
tp->have_thread = 1;

schedule_delayed_work(&tp->thread, next_tick);
}

static void rtl8139_stop_thread(struct rtl8139_private *tp)
{
if (tp->time_to_die < 0)
return;

tp->time_to_die = 1;
wmb();

if (cancel_delayed_work(&tp->thread) == 0)
flush_scheduled_work();
if (tp->have_thread) {
cancel_rearming_delayed_work(&tp->thread);
tp->have_thread = 0;
}
}

static inline void rtl8139_tx_clear (struct rtl8139_private *tp)
Expand Down

0 comments on commit ca58a23

Please sign in to comment.