mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-09-06 18:05:37 +00:00
cadence_gem: Correct the multi-queue can rx logic
Correct the buffer descriptor busy logic to work correctly when using multiple queues. Signed-off-by: Alistair Francis <alistair.francis@xilinx.com> Message-id: 8a7e8059984e27d46a276a66299d035a0afd280f.1491947224.git.alistair.francis@xilinx.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
75b7760212
commit
dacc0566ac
|
@ -481,14 +481,17 @@ static int gem_can_receive(NetClientState *nc)
|
|||
}
|
||||
|
||||
for (i = 0; i < s->num_priority_queues; i++) {
|
||||
if (rx_desc_get_ownership(s->rx_desc[i]) == 1) {
|
||||
if (s->can_rx_state != 2) {
|
||||
s->can_rx_state = 2;
|
||||
DB_PRINT("can't receive - busy buffer descriptor (q%d) 0x%x\n",
|
||||
i, s->rx_desc_addr[i]);
|
||||
}
|
||||
return 0;
|
||||
if (rx_desc_get_ownership(s->rx_desc[i]) != 1) {
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
if (i == s->num_priority_queues) {
|
||||
if (s->can_rx_state != 2) {
|
||||
s->can_rx_state = 2;
|
||||
DB_PRINT("can't receive - all the buffer descriptors are busy\n");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (s->can_rx_state != 0) {
|
||||
|
|
Loading…
Reference in a new issue