|
@@ -811,7 +811,17 @@ static ssize_t dp8393x_receive(NetClientState *nc, const uint8_t * buf,
|
|
|
return -1;
|
|
|
}
|
|
|
/* Link has been updated by host */
|
|
|
+
|
|
|
+ /* Clear in_use */
|
|
|
+ size = sizeof(uint16_t) * width;
|
|
|
+ address = dp8393x_crda(s) + sizeof(uint16_t) * 6 * width;
|
|
|
+ dp8393x_put(s, width, 0, 0);
|
|
|
+ address_space_rw(&s->as, address, MEMTXATTRS_UNSPECIFIED,
|
|
|
+ (uint8_t *)s->data, size, 1);
|
|
|
+
|
|
|
+ /* Move to next descriptor */
|
|
|
s->regs[SONIC_CRDA] = s->regs[SONIC_LLFA];
|
|
|
+ s->regs[SONIC_ISR] |= SONIC_ISR_PKTRX;
|
|
|
}
|
|
|
|
|
|
/* Save current position */
|