Browse Source

Make sure to have at least one staged work item when deciding whether to queue another request or not and dec queued in free work not discard work.

nfactor-troky
Con Kolivas 13 years ago
parent
commit
c860172275
  1. 20
      cgminer.c

20
cgminer.c

@ -1892,8 +1892,17 @@ static struct work *make_work(void)
return work; return work;
} }
static inline void dec_queued(void)
{
if (likely(total_queued > 0))
total_queued--;
}
static void free_work(struct work *work) static void free_work(struct work *work)
{ {
if (!work->clone)
dec_queued();
free(work); free(work);
} }
@ -2377,17 +2386,8 @@ static inline void inc_queued(void)
total_queued++; total_queued++;
} }
static inline void dec_queued(void)
{
if (likely(total_queued > 0))
total_queued--;
}
static void discard_work(struct work *work) static void discard_work(struct work *work)
{ {
if (!work->clone)
dec_queued();
if (!work->clone && !work->rolls && !work->mined) { if (!work->clone && !work->rolls && !work->mined) {
if (work->pool) if (work->pool)
work->pool->discarded_work++; work->pool->discarded_work++;
@ -3496,7 +3496,7 @@ static bool queue_request(struct thr_info *thr, bool needed)
struct workio_cmd *wc; struct workio_cmd *wc;
if ((total_queued >= opt_queue && rs >= mining_threads) || if ((total_queued >= opt_queue && rs >= mining_threads) ||
total_queued >= mining_threads) (total_queued >= mining_threads && rs))
return true; return true;
/* fill out work request message */ /* fill out work request message */

Loading…
Cancel
Save