mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-22 20:44:19 +00:00
Use the flip functions in hashtest.
This commit is contained in:
parent
54e218b6d4
commit
432bfd0e5c
25
cgminer.c
25
cgminer.c
@ -5124,24 +5124,19 @@ void submit_work_async(struct work *work_in, struct timeval *tv_work_found)
|
|||||||
static bool hashtest(struct thr_info *thr, struct work *work)
|
static bool hashtest(struct thr_info *thr, struct work *work)
|
||||||
{
|
{
|
||||||
uint32_t *data32 = (uint32_t *)(work->data);
|
uint32_t *data32 = (uint32_t *)(work->data);
|
||||||
unsigned char swap[128];
|
unsigned char swap[80];
|
||||||
uint32_t *swap32 = (uint32_t *)swap;
|
uint32_t *swap32 = (uint32_t *)swap;
|
||||||
unsigned char hash1[32];
|
unsigned char hash1[32];
|
||||||
unsigned char hash2[32];
|
unsigned char hash2[32];
|
||||||
uint32_t *hash2_32 = (uint32_t *)hash2;
|
uint32_t *hash2_32 = (uint32_t *)hash2;
|
||||||
int i;
|
bool ret = false;
|
||||||
|
|
||||||
for (i = 0; i < 80 / 4; i++)
|
|
||||||
swap32[i] = swab32(data32[i]);
|
|
||||||
|
|
||||||
|
flip80(swap32, data32);
|
||||||
sha2(swap, 80, hash1, false);
|
sha2(swap, 80, hash1, false);
|
||||||
sha2(hash1, 32, hash2, false);
|
sha2(hash1, 32, hash2, false);
|
||||||
|
flip32(work->hash, hash2_32);
|
||||||
|
|
||||||
for (i = 0; i < 32 / 4; i++)
|
/* Flipped or not, hash2_32[7] should be 0 */
|
||||||
hash2_32[i] = swab32(hash2_32[i]);
|
|
||||||
|
|
||||||
memcpy((void*)work->hash, hash2, 32);
|
|
||||||
|
|
||||||
if (hash2_32[7] != 0) {
|
if (hash2_32[7] != 0) {
|
||||||
applog(LOG_WARNING, "%s%d: invalid nonce - HW error",
|
applog(LOG_WARNING, "%s%d: invalid nonce - HW error",
|
||||||
thr->cgpu->api->name, thr->cgpu->device_id);
|
thr->cgpu->api->name, thr->cgpu->device_id);
|
||||||
@ -5154,18 +5149,18 @@ static bool hashtest(struct thr_info *thr, struct work *work)
|
|||||||
if (thr->cgpu->api->hw_error)
|
if (thr->cgpu->api->hw_error)
|
||||||
thr->cgpu->api->hw_error(thr);
|
thr->cgpu->api->hw_error(thr);
|
||||||
|
|
||||||
return false;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool test = fulltest(work->hash, work->target);
|
ret = fulltest(work->hash, work->target);
|
||||||
if (!test) {
|
if (!ret) {
|
||||||
applog(LOG_INFO, "Share below target");
|
applog(LOG_INFO, "Share below target");
|
||||||
/* Check the diff of the share, even if it didn't reach the
|
/* Check the diff of the share, even if it didn't reach the
|
||||||
* target, just to set the best share value if it's higher. */
|
* target, just to set the best share value if it's higher. */
|
||||||
share_diff(work);
|
share_diff(work);
|
||||||
}
|
}
|
||||||
|
out:
|
||||||
return test;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void submit_nonce(struct thr_info *thr, struct work *work, uint32_t nonce)
|
void submit_nonce(struct thr_info *thr, struct work *work, uint32_t nonce)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user