Commit c1ded3dc authored by Jan Kiszka's avatar Jan Kiszka Committed by Anthony Liguori
Browse files

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: default avatarJan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
parent 2871a3f6
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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