Browse Source

Only return one nonce range per device per cycle through scanwork in bflsc to avoid batching of result count.

nfactor-troky
Con Kolivas 12 years ago
parent
commit
4530a74e0b
  1. 21
      driver-bflsc.c

21
driver-bflsc.c

@ -59,7 +59,7 @@ struct bflsc_dev { @@ -59,7 +59,7 @@ struct bflsc_dev {
int work_complete;
int nonces_hw; // TODO: this - need to add a paramter to submit_nonce()
// so can pass 'dev' to hw_error
uint64_t hashes_unsent;
uint64_t nonces_unsent;
uint64_t hashes_sent;
uint64_t nonces_found;
@ -1360,7 +1360,7 @@ static void process_nonces(struct cgpu_info *bflsc, int dev, char *xlink, char * @@ -1360,7 +1360,7 @@ static void process_nonces(struct cgpu_info *bflsc, int dev, char *xlink, char *
if (res)
sc_info->sc_devs[dev].result_id++;
sc_info->sc_devs[dev].work_complete++;
sc_info->sc_devs[dev].hashes_unsent += FULLNONCE;
sc_info->sc_devs[dev].nonces_unsent++;
// If not flushed (stale)
if (!(work->devflag))
sc_info->sc_devs[dev].work_queued -= 1;
@ -1698,10 +1698,10 @@ static int64_t bflsc_scanwork(struct thr_info *thr) @@ -1698,10 +1698,10 @@ static int64_t bflsc_scanwork(struct thr_info *thr)
{
struct cgpu_info *bflsc = thr->cgpu;
struct bflsc_info *sc_info = (struct bflsc_info *)(bflsc->device_data);
int64_t ret, unsent;
bool flushed, cleanup;
struct work *work, *tmp;
bool flushed, cleanup;
int dev, waited, i;
int64_t ret;
// Device is gone
if (bflsc->usbinfo.nodev)
@ -1791,11 +1791,14 @@ static int64_t bflsc_scanwork(struct thr_info *thr) @@ -1791,11 +1791,14 @@ static int64_t bflsc_scanwork(struct thr_info *thr)
ret = 0;
wr_lock(&(sc_info->stat_lock));
for (dev = 0; dev < sc_info->sc_count; dev++) {
unsent = sc_info->sc_devs[dev].hashes_unsent;
sc_info->sc_devs[dev].hashes_unsent = 0;
sc_info->sc_devs[dev].hashes_sent += unsent;
sc_info->hashes_sent += unsent;
ret += unsent;
/* Only return one nonce range per cycle through scanwork to
* avoid batching of results during downtime. */
if (sc_info->sc_devs[dev].nonces_unsent) {
sc_info->sc_devs[dev].nonces_unsent--;
sc_info->sc_devs[dev].hashes_sent += FULLNONCE;
sc_info->hashes_sent += FULLNONCE;
ret += FULLNONCE;
}
}
wr_unlock(&(sc_info->stat_lock));

Loading…
Cancel
Save