Revision efb56cf7 hw/pcnet.c

b/hw/pcnet.c
69 69
    uint16_t csr[128];
70 70
    uint16_t bcr[32];
71 71
    uint64_t timer;
72
    int mmio_index, xmit_pos, recv_pos;
72
    int mmio_index, xmit_pos;
73 73
    uint8_t buffer[4096];
74 74
    int tx_busy;
75 75
    qemu_irq irq;
......
1067 1067
    if (CSR_STOP(s) || CSR_SPND(s))
1068 1068
        return 0;
1069 1069

  
1070
    if (s->recv_pos > 0)
1071
        return 0;
1072

  
1073 1070
    return sizeof(s->buffer)-16;
1074 1071
}
1075 1072

  
......
1896 1893
        qemu_put_be16s(f, &s->bcr[i]);
1897 1894
    qemu_put_be64s(f, &s->timer);
1898 1895
    qemu_put_sbe32(f, s->xmit_pos);
1899
    qemu_put_sbe32(f, s->recv_pos);
1900 1896
    qemu_put_buffer(f, s->buffer, 4096);
1901 1897
    qemu_put_sbe32(f, s->tx_busy);
1902 1898
    qemu_put_timer(f, s->poll_timer);
......
1905 1901
static int pcnet_load(QEMUFile *f, void *opaque, int version_id)
1906 1902
{
1907 1903
    PCNetState *s = opaque;
1908
    int i;
1904
    int i, dummy;
1909 1905

  
1910
    if (version_id != 2)
1906
    if (version_id < 2 || version_id > 3)
1911 1907
        return -EINVAL;
1912 1908

  
1913 1909
    qemu_get_sbe32s(f, &s->rap);
......
1922 1918
        qemu_get_be16s(f, &s->bcr[i]);
1923 1919
    qemu_get_be64s(f, &s->timer);
1924 1920
    qemu_get_sbe32s(f, &s->xmit_pos);
1925
    qemu_get_sbe32s(f, &s->recv_pos);
1921
    if (version_id == 2) {
1922
        qemu_get_sbe32s(f, &dummy);
1923
    }
1926 1924
    qemu_get_buffer(f, s->buffer, 4096);
1927 1925
    qemu_get_sbe32s(f, &s->tx_busy);
1928 1926
    qemu_get_timer(f, s->poll_timer);
......
1943 1941
    PCIPCNetState *s = opaque;
1944 1942
    int ret;
1945 1943

  
1946
    if (version_id != 2)
1947
        return -EINVAL;
1948

  
1949 1944
    ret = pci_device_load(&s->pci_dev, f);
1950 1945
    if (ret < 0)
1951 1946
        return ret;
......
2071 2066
    s->phys_mem_read = pci_physical_memory_read;
2072 2067
    s->phys_mem_write = pci_physical_memory_write;
2073 2068

  
2074
    register_savevm("pcnet", -1, 2, pci_pcnet_save, pci_pcnet_load, d);
2069
    register_savevm("pcnet", -1, 3, pci_pcnet_save, pci_pcnet_load, d);
2075 2070
    return pcnet_common_init(&pci_dev->qdev, s, pci_pcnet_cleanup);
2076 2071
}
2077 2072

  
......
2148 2143
    s->phys_mem_read = ledma_memory_read;
2149 2144
    s->phys_mem_write = ledma_memory_write;
2150 2145

  
2151
    register_savevm("pcnet", -1, 2, pcnet_save, pcnet_load, s);
2146
    register_savevm("pcnet", -1, 3, pcnet_save, pcnet_load, s);
2152 2147
    return pcnet_common_init(&dev->qdev, s, lance_cleanup);
2153 2148
}
2154 2149

  

Also available in: Unified diff