pcnet: Do not receive external frames in loopback mode
While not explicitly stated in the spec, it was observed on real systems that enabling loopback testing on the pcnet controller disables reception of external frames. And some legacy software relies on it, so provide this behavior. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
2871a3f6b6
commit
c1ded3dc9f
@ -1048,9 +1048,10 @@ ssize_t pcnet_receive(VLANClientState *nc, const uint8_t *buf, size_t size_)
|
||||
int crc_err = 0;
|
||||
int size = size_;
|
||||
|
||||
if (CSR_DRX(s) || CSR_STOP(s) || CSR_SPND(s) || !size)
|
||||
if (CSR_DRX(s) || CSR_STOP(s) || CSR_SPND(s) || !size ||
|
||||
(CSR_LOOP(s) && !s->looptest)) {
|
||||
return -1;
|
||||
|
||||
}
|
||||
#ifdef PCNET_DEBUG
|
||||
printf("pcnet_receive size=%d\n", size);
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user