Revision b10fec9b

b/hw/e1000.c
89 89
    struct e1000_tx {
90 90
        unsigned char header[256];
91 91
        unsigned char vlan_header[4];
92
        /* Fields vlan and data must not be reordered or separated. */
92 93
        unsigned char vlan[4];
93 94
        unsigned char data[0x10000];
94 95
        uint16_t size;
......
383 384
    if (tp->sum_needed & E1000_TXD_POPTS_IXSM)
384 385
        putsum(tp->data, tp->size, tp->ipcso, tp->ipcss, tp->ipcse);
385 386
    if (tp->vlan_needed) {
386
        memmove(tp->vlan, tp->data, 12);
387
        memmove(tp->vlan, tp->data, 4);
388
        memmove(tp->data, tp->data + 4, 8);
387 389
        memcpy(tp->data + 8, tp->vlan_header, 4);
388 390
        qemu_send_packet(&s->nic->nc, tp->vlan, tp->size + 4);
389 391
    } else

Also available in: Unified diff